简单工厂模式

工厂模式

抽象动物:

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
相关推荐
小白学大数据6 分钟前
爬虫进阶:Selenium与Ajax的无缝集成
大数据·开发语言·爬虫·selenium·ajax
泡芙冰淇淋ya11 分钟前
【spring boot项目】统一返回结果封装
java·spring boot·后端
取加若则_13 分钟前
C++入门(C语言过渡)
c语言·开发语言·数据结构·c++·算法
极度的坦诚就是无坚不摧14 分钟前
Python 数据容器的对比
开发语言·python
qq_1887988714 分钟前
spring mvc学习
java·后端·学习·spring·mvc
onetwo_23319 分钟前
python实现接口自动化
开发语言·python·自动化
YangZheng@23 分钟前
23种设计模式
c++·算法·设计模式
互联网架构小马25 分钟前
12种增强Python代码的函数式编程技术
开发语言·后端·python·函数式编程
蝎子莱莱爱打怪39 分钟前
docker 重要且常用命令大全
java·spring cloud·docker·容器·eureka
会编程的果子君39 分钟前
人工智能系列-Python面向对象编程
开发语言·python