简单工厂模式

工厂模式

抽象动物:

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
相关推荐
PXM的算法星球2 分钟前
【操作系统】哲学家就餐问题实现详解
java
2301_815357706 分钟前
Java项目架构从单体架构到微服务架构的发展演变
java·微服务·架构
码小猿的CPP工坊7 分钟前
C++软件开发之内存泄漏闭坑方法
开发语言·c++
Ethan-D10 分钟前
#每日一题19 回溯 + 全排列思想
java·开发语言·python·算法·leetcode
Echoo华地26 分钟前
idea运行程序默认线程为daemon线程的问题
java·ide·intellij-idea
满栀58528 分钟前
分页插件制作
开发语言·前端·javascript·jquery
froginwe1131 分钟前
C 标准库 - <stdio.h>
开发语言
zwtahql36 分钟前
php源码级别调试
开发语言·php
歪楼小能手40 分钟前
Android16系统go版关闭重力旋转开关后缺失手动旋转屏幕悬浮按钮
android·java·平板
qq_4061761442 分钟前
深入剖析JavaScript原型与原型链:从底层机制到实战应用
开发语言·前端·javascript·原型模式