一、简单工厂模式的组成部分
a)抽象产品: 在接口中指定了每种具体产品需要实现的方法
具体产品: 实现接口
b)工厂类:根据具体的参数,创建和返回相应的具体产品,由主程序直接调用
二、代码实现
抽象产品:Car
package com.simpleFactory; public interface Car { public void run(); }
具体产品1:BENZ
package com.simpleFactory; public class BENZ implements Car { public void run() { // TODO Auto-generated method stub System.out.println("BENZ is running!"); } }
具体产品2:BMW
package com.simpleFactory; public class BMW implements Car { public void run() { // TODO Auto-generated method stub System.out.println("BMW is running!"); } }
工厂类:Factory
package com.simpleFactory; public class Factory { /** * 静态工厂方法 * */ public static Car createCar(String carName){ Car car = null; if(carName.equalsIgnoreCase("BMW")){ car = new BMW(); }else if(carName.equalsIgnoreCase("BENZ")){ car = new BENZ(); } return car; } }
主函数:
package com.simpleFactory; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("开始测试简单工厂模式!"); Car car_A=Factory.createCar("BENZ"); car_A.run(); Car car_B=Factory.createCar("BMW"); car_B.run(); }
运行结果:
说明:虽然简单工厂模式使用广泛,但有个十分明显的特点:每增加一个新类, 就必须
修改“工厂类中生产产品的静态方法”,如此并不符合“开闭原则”(对扩展开放,对改变关闭)