简单工厂模式

工厂模式

抽象动物:

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
相关推荐
book123_0_993 分钟前
Redis四种模式在Spring Boot框架下的配置
java
IT成长史9 分钟前
Windows D盘安装Docker Desktop全流程(避坑+ECR镜像推送实战)
java·docker
电商API_1800790524712 分钟前
API分享:获取淘宝商品价格|详情|主图|sku信息
开发语言·c++·人工智能·数据分析
一定要AK16 分钟前
java基础
java·开发语言·笔记
han_21 分钟前
JavaScript设计模式(六):职责链模式实现与应用
前端·javascript·设计模式
splage23 分钟前
Java进阶之泛型
java·开发语言
Meepo_haha25 分钟前
python爬虫——爬取全年天气数据并做可视化分析
java
xiaohe0725 分钟前
JAVA系统中Spring Boot 应用程序的配置文件:application.yml
java·开发语言·spring boot
羊小蜜.26 分钟前
C++17: map & multimap—— 键值映射容器
开发语言·c++·stl
Eternity_GQM26 分钟前
【CMake入门】
java·开发语言