简单工厂模式

工厂模式

抽象动物:

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
相关推荐
Rabitebla13 小时前
vector 的骨架:三根指针、模板陷阱与迭代器失效的第一现场
开发语言·数据结构·c++·算法
时空系13 小时前
第7篇:功能——打造你的工具箱 Rust中文编程
开发语言·网络·rust
薪火铺子13 小时前
Spring Security 6.x 实战指南
java·后端·spring
csbysj202013 小时前
CSS !important:深度解析与最佳实践
开发语言
善恶怪客13 小时前
Java-数据类型
java
初心未改HD13 小时前
Go语言测试与Benchmark:测试驱动开发的实践指南
开发语言·golang
学习3人组13 小时前
Mes全连路架构图
java·erp
chxii14 小时前
lua流程控制语句和table(表)数据结构
开发语言·junit·lua
上弦月-编程14 小时前
C语言指针从入门到实战
java·jvm·算法
Cyan_RA914 小时前
SpringMVC 请求数据绑定与参数映射 详解
java·后端·spring·mvc·springmvc·映射请求数据