工厂模式
通过工厂模式来达到一个类创建多个不同对象的目的。
简单工厂
通过创建多个判断条件或者是多个方法,来达到创建多个类的目的。
好处:这样能规避调用者对于内部实现细节的了解
坏处:这个违反了开闭原则(对于修改是闭合的,对于扩展是开放的);问题是这个东西如果需要扩展就需要修改老的业务代码。
public class SimpleFactory {
private static Car car;
public static Car createCar(String type){
if(type=="Benz"){
car=new Benz();
}else if(type=="Audi"){
car=new Audi();
}
return car;
}
}
工厂方法
通过增加多个工厂方法,来规避开闭原则的问题;这样可以在增加新的业务时多增加一个新的实现类即可。
public class BenzFactory implements CarFactory {
public Car createCar() {
return new Benz();
}
}
抽象工厂
这个其实和工厂类没啥太大关系。
出现的原因是因为线上业务一般不可能是一个接口就能实现的,这样就会出现一种说法-----产品簇。
通过封装多个接口和实现,来组装出工厂类,使用工厂类来实现。
public class LowFactory implements CarFactory{
//通过定义来创建,可以调用相关的数据
public Seat createSeat() {
return new LuxurySeat();
}
public Engine createEngine() {
return new LuxuryEngine();
}
}
个人感觉下面的方法更加好:
//名字改一改,然后通过传进去的参数来确认创建怎样的(这个其实是策略模型,哈哈哈)
public class LuxuryFactory implements CarFactory {
Seat seat=new LuxurySeat();
Engine engine=new LuxuryEngine();
public LuxuryFactory(Seat seat, Engine engine) {
this.seat = seat;
this.engine = engine;
}
public Seat createSeat() {
return seat;
}
public Engine createEngine() {
return engine;
}
}