您的位置:首页 > 其它

创建型设计模式-抽象工厂模式

2017-03-02 16:33 204 查看
抽象工厂:

提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类

抽象工厂模式参与角色:

抽象工厂角色:定义创建具体产品的方法

具体工厂角色:执行生成具体产品的方法,生成一个具体的产品

抽象产品:声明一种产品接口

具体产品:定义具体工厂生成的具体产品的对象,实现产品接口

客户角色:使用抽象产品和抽象工程声称对象

抽象工厂角色:AbstractFactory

public abstract class AbstractFactory {

/**
* 定义工厂的通用方法
* @return
*/
public abstract AbstractProduct createProduct();
}


具体工厂:ConcreteFactory

public class ConcreteFactory extends AbstractFactory {

@Override
public AbstractProduct createProduct() {
return new ConcreteProduct();
}
}


抽象产品:AbstractProduct

public abstract class AbstractProduct {

/**
* 定义产品的通用方法
*/
public abstract void show();
}


具体产品:ConcreteProduct

public class ConcreteProduct extends AbstractProduct{

@Override
public void show() {
System.out.println("I am a ConcreteProduct!");
}
}


测试代码:

AbstractFactory abf=new ConcreteFactory();  //多态:创建实际的具体工厂
AbstractProduct ap=abf.createProduct();     //具体工厂生产具体产品
ap.show();                                 //产品方法


结果:



抽象工厂设计模式分析:

抽象工厂设计模式通过设计抽象工厂类/接口和抽象产品类/接口,将工厂生产产品的具体流程剥离出来,相当于定义一个工厂和产品的规范,后续如果想对工厂和产品进行扩展,只需要创建新的工厂和产品类,并实现对应的接口,这样不需要修改原有代码的情况下,通过原有的抽象工厂的接口实现对新工厂和新产品的访问处理,这解决了简单工厂遗留的工厂/产品扩展性的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息