一、简单工厂模式的组成部分
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();
}
运行结果:
说明:虽然简单工厂模式使用广泛,但有个十分明显的特点:每增加一个新类, 就必须
修改“工厂类中生产产品的静态方法”,如此并不符合“开闭原则”(对扩展开放,对改变关闭)