-
简单工厂 VS 工厂方法: 简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除与具体产品的依赖
-
工厂方法模式(Factory Method),定义一个用于用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。
-
工厂方法 VS 抽象工厂
工厂方法:对产品进行扩展,食物,车,新增武器 抽象工厂:对产品族进行扩展,现代人,新增精灵族
-
任何可以产生对象的方法或类,都可以称之为工厂,单例也是一种工厂
-
why
灵活控制生产过程 权限、修饰、日志。
使用工厂方法
-
Main.java
public class Main { public static void main(String[] args) { Moveable moveable2 = new CarFactory().create(); moveable2.go(); } }
-
Moveable
public interface Moveable { void go(); }
-
Car .java
public class Car implements Moveable{ public void go() { System.out.println("Car go wuwuwuwuwu..."); } }
-
CarFactory
public class CarFactory { public Moveable create() { //before processing System.out.println("a car created!"); return new Car(); } }
-
扩展简单工厂应用
-
在这个场景下这个工厂方法即可根据传入的运算符自动进行对应的对象创建,而不用在上一级逻辑中对运算符进行判断在创建对象,其实要做的事情是一样的,但是,这是属于将功能细化封装,是你的代码更易读且易扩展。
/// 运算类工厂 /// /summary class OperationFactory{ public static Operation createOperate(string operate){ Operation oper = null; switch (operate){ case "+": oper = new OperationAdd(); break; case "-": oper = new OperationSub(); break; case "*": oper = new OperationMul(); break; case "/": oper = new OperationDiv(); break; } return oper; } }