简单工厂-SinpleFactory

简单工厂:

一个具体工厂通过条件语句创建多个产品,产品的创建逻辑集中在一个工厂类上。

客户端通过传递不同的参数给工厂,实现创建不同产品的目的。

增加新产品时,需要修改工厂类,这不符合OCP原则。

code:
抽象类(或接口):
public abrtract class Auto{
abstract public void run();
}

实现类Car:
public class Car extends Auto{
public Car(){}
public void run(){
System.out.println("启动car");
}
}

实现类Truck:
public class Truck extends Auto{
public Truck(){}
public void run(){
System.out.println("启动truck");
}
}


工厂类:
public class AutoFactory{
public static Auto createAuto(int autoId){
switch(autoId){
case1: return new Car();
case2: return new Truck();
}
}
}

客户端:
pubic class Client{
public static void main(){
Auto car = AutoFactory.createAuto(1);
car.run();
Auto truck = AutoFactory.createAuto(1);
truck.run();
}
}


优点:
客户端调用创建产品时与产品的具体类的耦合度降低;
令创建与使用的代码相分离,可以独立的变化,易维护和扩展;


缺点:
当产品有复杂的多层次等级结构时,工厂类只有一个,只能以不变应万变。
所有产品的创建都集中到工厂类中,系统在进行功能扩展时较为困难。
简单工厂使用静态方法作为工厂方法,无法形成继承,使用工厂的可扩展性受到限制。

猜你喜欢

转载自premier9527.iteye.com/blog/1668814