简单工厂模式

工厂模式

抽象动物:

java 复制代码
public abstract class Animal {
    // 动物都要吃饭
    public abstract void eat();
}
java 复制代码
public class Cat extends Animal{
    @Override
    public void eat() {
        System.out.println("小猫吃猫粮");
    }
}
java 复制代码
public class Cat extends Animal{
    @Override
    public void eat() {
        System.out.println("小猫吃猫粮");
    }
}

抽象工厂:

java 复制代码
public abstract class AnimalFactory {
    public abstract Animal createAnimal();
}
java 复制代码
public class CatFacoty extends AnimalFactory{
    @Override
    public Animal createAnimal() {
        return new Cat();
    }
}
java 复制代码
public class DogFactory extends AnimalFactory{
    @Override
    public Animal createAnimal() {
        return new Dog();
    }
}
java 复制代码
public class FactoryTest {
    public static void main(String[] args) {
        AnimalFactory factory = new DogFactory();
        Animal animal = factory.createAnimal();
        animal.eat();

        AnimalFactory factory2 = new CatFacoty();
        Animal animal2 = factory2.createAnimal();
        animal2.eat();
    }
}

在这里,如果需要创建新的类,只需要新增animal的子类和factory的资料,不需要修改原来的代码,对扩展开放,符合开闭原则。

源码参考:

  • Collection.iterator
  • URLStreamHandler.createURLStreamHandler
相关推荐
ChoSeitaku13 小时前
06_可变参数_递归_类和对象_封装
java·数据结构·算法
枕星而眠13 小时前
C++ 核心语法精讲:auto / 模板 / 命名空间 / 动态内存 从用法到面试
开发语言·c++·面试
Full Stack Developme13 小时前
Spring Context 解析
java·spring·rpc
雪碧聊技术13 小时前
什么是生成器模式?一文详解
设计模式·生成器模式
沐知全栈开发13 小时前
jEasyUI 创建异步提交表单
开发语言
爱棋笑谦13 小时前
热部署简述
java
码完就睡13 小时前
C语言——结构体的内存存储规则
c语言·开发语言
敲代码的瓦龙13 小时前
Android?广播!!!
android·java·开发语言·android-studio
磊 子13 小时前
1.2内存的存储金字塔
java·开发语言·spring·操作系统
wjs202413 小时前
Bootstrap5 提示框(Tooltip)
开发语言