属于创建型模式 (共5种)

    任何可以产生对象的方法或类 都可以称为工厂

    目的:灵活的控制生产过程 可以加权限 修饰 日志

    简单工厂(可扩展性不好)
    相同属性的类 可以共同实现一个父类接口 实现抽取的相同方法;
    一个工厂类 可以初始化 很多实例 、也可以针对每一种产品做一个工厂 初始化实例的方法 返回实例的父类接口

    类图:
    image.png
    部分实现

    1. //工厂类 返回父类接口
    2. public class CarFactory {
    3. public Moveable create() {
    4. System.out.println("a car created!");
    5. return new Car();
    6. }
    7. }
    8. //父类接口 抽取相同的方法
    9. public interface Moveable {
    10. void go();
    11. }
    12. //具体实例类 实现接口方法
    13. public class Car implements Moveable {
    14. public void go() {
    15. System.out.println("Car go wuwuwuwuw....");
    16. }
    17. }
    18. //模拟实际调用
    19. public class Main {
    20. public static void main(String[] args) {
    21. Moveable m = new CarFactory().create();
    22. m.go();
    23. }
    24. }

    例如:
    交通工具工厂 可以 new 很多交通工具实例,new car 返回的是 car类实现的 Movable接口
    但是每添加一种新的类 都要修改工厂源码 对新添加的类初始化

    优点:
    方便产品的扩展 添加新产品
    任意定制交通工具 (多态 父类引用指向子类对象)
    任意定制成产过程 工厂创建实例的过程中 可以在创建前后添加需要的方法、逻辑处理 比如日志