理解工厂模式
2015-04-29 15:41
92 查看
一、简单工厂模式,因为创建对象的方法是static的,所以也叫静态工厂模式。
由来:静态工厂模式是为了对产品类有统一的创建方法,而对于客户端如何创建"产品"是不需要知道也不需要管的。
通过客户端提供的信息,new出不同的“产品”
关键代码:
class Factory(){
public static Farther(){
if("sub1"){
return new Sub1();
}else if("sub2"){
return new Sub2();
}
}
}
class Farther(){}
class Sub1 extends Farther(){}
class Sub2 extends Farther(){}
二、工厂模式,因为简单工厂模式不符合开闭原则,所以需要工厂模式来解决这个问题。
关键点:需要一个工厂接口和一个产品基类,在新添加的产品的情况下新建工厂和产品即可,符合开闭原则。
每一个产品的生产都需要一个工厂。优点是符合开闭原则(对修改关闭,对扩展开放)。缺点是造成类过多(每一个产品都需要一个产品子类和一个工厂类)
interface Factory(){
public Product factoryMethod();
}
class FactoryType1 implements Factory(){
public Product factoryMethod(){
return new ProductSub1();
}
}
class Product(){}
class ProductSub1 extends Farther(){}
三、抽象工厂模式,对产品过多的工厂模式,类的数量将极大的增加,抽象工厂模式可以将产品分族实现创建对象。
对添加产品族是符合开闭原则的,对改变产品结构是不合符开闭原则的。
abstract interface AbstractFactory(){ //每建一个子工厂都必须赋予这个工厂A,B两种产品的生产。每个工厂都可以有自己的实现(即不同的牌子的产品)
public abstract productA productAFactory();
public abstract productB productAFactory();
}
由来:静态工厂模式是为了对产品类有统一的创建方法,而对于客户端如何创建"产品"是不需要知道也不需要管的。
通过客户端提供的信息,new出不同的“产品”
关键代码:
class Factory(){
public static Farther(){
if("sub1"){
return new Sub1();
}else if("sub2"){
return new Sub2();
}
}
}
class Farther(){}
class Sub1 extends Farther(){}
class Sub2 extends Farther(){}
二、工厂模式,因为简单工厂模式不符合开闭原则,所以需要工厂模式来解决这个问题。
关键点:需要一个工厂接口和一个产品基类,在新添加的产品的情况下新建工厂和产品即可,符合开闭原则。
每一个产品的生产都需要一个工厂。优点是符合开闭原则(对修改关闭,对扩展开放)。缺点是造成类过多(每一个产品都需要一个产品子类和一个工厂类)
interface Factory(){
public Product factoryMethod();
}
class FactoryType1 implements Factory(){
public Product factoryMethod(){
return new ProductSub1();
}
}
class Product(){}
class ProductSub1 extends Farther(){}
三、抽象工厂模式,对产品过多的工厂模式,类的数量将极大的增加,抽象工厂模式可以将产品分族实现创建对象。
对添加产品族是符合开闭原则的,对改变产品结构是不合符开闭原则的。
abstract interface AbstractFactory(){ //每建一个子工厂都必须赋予这个工厂A,B两种产品的生产。每个工厂都可以有自己的实现(即不同的牌子的产品)
public abstract productA productAFactory();
public abstract productB productAFactory();
}
相关文章推荐
- 静态工厂模式 理解
- 设计模式之我的理解----创建型模式:工厂方法
- Android 工厂模式,三种工厂模式的理解
- 关于工厂模式和建造者模式的理解
- 个人理解这三种工厂模式
- 自己理解的java工厂模式,希望对大家有所帮助
- 工厂模式理解
- 设计模式之我的理解:构建型模式:抽象工厂
- 简单工厂模式理解1
- 我理解的--java工厂模式
- 深入理解PHP:高级技巧、面向对象与核心技术(原书第3版) -- 设计模式之工厂模式
- 对工厂模式与单例模式的理解
- GOF23之工厂模式理解
- 自己对设计模式的理解:工厂模式和单例模式
- 深入理解java三种工厂模式
- 个人对于PHP设计模式之工厂模式的理解
- 设计模式的理解之(虚拟工厂模式)
- 设计模式理解之工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
- Pattern_Note_LabVIEW工厂模式理解
- 对工厂模式的简单理解