工厂模式
它提供了一种创建对象的最佳方式,我们不用将对象的创建逻辑暴露出来,通过使用一个公共的接口来指向新创建的对象。
优点: 1、通过名字便可以实现对象的获取 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、隐藏对象的创建过程,使用者只需要关注产品接口就行。
缺点: 每次在需要新的产品时,都需要添加一个产品类,在一定程度上增加了系统的复杂度。
代码实现
//汽车接口
interface Car{
int speed();
}
//产品1
class Honda implements Car{
@Override
public int speed() {
return 120;
}
}
//产品2
class Toyota implements Car{
@Override
public int speed() {
return 100;
}
}
//产品3
class GTR implements Car{
@Override
public int speed() {
return 200;
}
}
//汽车工厂,生产汽车对象
public class Factory {
//生产汽车的方法
public Car getCar(String brand){
if ("Honda".equals(brand)){
return new Honda();
}else if ("Toyota".equals(brand)){
return new Toyota();
}else if ("GTR".equals(brand)){
return new GTR();
}else {
return null;
}
}
//测试方法
public static void main(String[] args) {
//新建一个工厂
Factory factory=new Factory();
//通过汽车接口获取生产汽车的速度
Car car=factory.getCar("Honda");
System.out.println(car.speed());
car=factory.getCar("Toyota");
System.out.println(car.speed());
car=factory.getCar("GTR");
System.out.println(car.speed());
}
}