简单工厂模式
通过Factory类和Product接口,Client中创建Product实例时,能够与具体的Product实现类解耦。简单体现在初始化逻辑足够简单以致单用构造函数就能够完成初始化。因而Factory类的创建方法中的if-else分支中只有一行产品实例化代码,进而通过参数化Product实现类和反射技术消除if-else,进而实现了开闭原则,即在配置文件中加入新Product的配置,无需修改任何代码。
Product接口
package com.life.factory.simple; public interface Computer { void start(); }
Product实现类
package com.life.factory.simple; public class MacComputer implements Computer { @Override public void start() { System.out.println("欢迎使用苹果电脑"); } }
Factory类
package com.life.factory.simple; import com.life.Util; public class ComputerFactory { public Computer createComputer(String type) { if(type == null || "".equals(type)) { type = "default"; } return (Computer) Util.getBean(type); } }
Client类
package com.life.factory.simple; public class Client { public static void main(String[] args) { ComputerFactory factory = new ComputerFactory(); //通过ComputerFactory和Computer接口,Client与具体的Computer实现类解耦了 Computer computer = factory.createComputer(""); computer.start(); } }