工厂设计模式
1.简单工厂
构成
- 抽象产品类:定义产品的标准和规范
- 具体产品类:具体实现产品的标准和规范
- 简单工厂类:根据需求,创建产品对象
优点
将产品对象的创建,不在由我们自己来new 而是由工厂来进行创建
缺点
是工厂和产品之间产生了高度的耦合,工厂的设计不符合类设计的开闭原则:类的扩展性不强
package org.lanqiao.simplefactory.demo;
//抽象产品类:可以是一个抽象类,也可以是一个接口
public interface ICar {
public void driver();
}
package org.lanqiao.simplefactory.demo;
//具体产品
public class Benz implements ICar{
@Override
public void driver() {
System.out.println("驾驶一辆奔驰");
}
}
package org.lanqiao.simplefactory.demo;
//具体产品
public class BMW implements ICar{
@Override
public void driver() {
System.out.println("驾驶一辆宝马...");
}
}
package org.lanqiao.simplefactory.demo;
//工厂类
public class SimpleFactory {
public static ICar creatCar(Class<?> clazz) {
if(clazz.getName().equals(BMW.class.getName())) {
return creatBMW();
}else if(clazz.getName().equals(Benz.class.getName())) {
return creatBenz();
}
return null;
}
private static BMW creatBMW() {
return new BMW();
}
private static Benz creatBenz() {
return new Benz();
}
}
package org.lanqiao.simplefactory.demo;
public class Test {
public static void main(String[] args) {
//通过使用工厂来创建对象
SimpleFactory sf = new SimpleFactory();
ICar bmw = sf.creatCar(BMW.class);
bmw.driver();
ICar benz = sf.creatCar(Benz.class);
benz.driver();
}
}