简单工厂模式

工厂模式

这里以动物命名,
抽象动物:

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

抽象工厂:

public abstract class AnimalFactory {
    public abstract Animal createAnimal();
}
public class CatFacoty extends AnimalFactory{
    @Override
    public Animal createAnimal() {
        return new Cat();
    }
}
public class DogFactory extends AnimalFactory{
    @Override
    public Animal createAnimal() {
        return new Dog();
    }
}
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

经典代码

相关推荐

  1. 简单工厂模式

    2024-04-21 13:48:05       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-21 13:48:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-21 13:48:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-21 13:48:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-21 13:48:05       20 阅读

热门阅读

  1. 【Vue3】ref基本类型的响应式数据

    2024-04-21 13:48:05       13 阅读
  2. 什么是关键信息基础设施及其安全保护条例

    2024-04-21 13:48:05       14 阅读
  3. 浏览器原理之本地存储

    2024-04-21 13:48:05       11 阅读
  4. 续传查询SQL不规范导致漏数的问题

    2024-04-21 13:48:05       15 阅读
  5. linux的内存管理

    2024-04-21 13:48:05       11 阅读