(创建模式)抽象工厂abstract factory
来源:互联网 发布:mac book屏保aerial 编辑:程序博客网 时间:2024/06/06 18:15
1:抽象工厂概述
(1)抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。
(2)抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。
(3)抽象工厂模式可以向客户端提供一个接口,使用客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。
2:工厂模式与抽象工厂
(1)当有多个抽象产品角色时,工厂方法模式已经不能满足要求。
(2)每一个模式都是针对一定问题的解决方案,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式针对的是多个产品等级结果。
根据LSP原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。
当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?比如每个抽象产品角色都有两个具体产品。抽象工厂模式提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂角色只负责某一个产品角色的实例化。每一个具体工厂类只负责创建抽象产品的某一个具体子类的实例。。
3:抽象工厂特点
通过引进抽象工厂模式,可以处理具有相同(或者相似)等级结构的多个产品族中的产品对象的创建问题。
由于每个具体工厂角色都需要负责两个不同等级结构的产品对象的创建,因此每个工厂角色都需要提供两个工厂方法,分别用于创建两个等级结构的产品。既然每个具体工厂角色都需要实现这两个工厂方法,所以具有一般性,不妨抽象出来,移动到抽象工厂角色中加以声明。
4:抽象工厂举例
抽象产品角色:
public interface Creator
{
public ProductA factoryA();
public ProductB factoryB();
}
具体工厂类1:
public class ConcreteCreator1 implements Creator
{
public ProductA factoryA()
{
return new ProductA1();
}
public ProductB factoryB()
{
return new ProductB1();
}
}
具体工厂类2:
public class ConcreteCreator2 implements Creator
{
public ProductA factoryA()
{
return new ProductA1();
}
public ProductB factoryB()
{
return new ProductB1();
}
}
一般而言,有多少个产品等级结构,就会在工厂角色中发现多少个工厂方法。每一个产品等级结构中有多少个具体的产品,就有多少个产品族,也就会在工厂等级结构中发现多少个具体工厂。
抽象产品类A:
public interface ProductA
{
}
抽象产品类B:
public interface ProductB
{
}
具体产品类ProdcutA1:
public class ProductA1 implements ProductA
{
public ProductA1()
{
}
}
具体产品类ProdcutA2:
public class ProductA2 implements ProductA
{
public ProductA2()
{
}
}
具体产品类ProdcutB1:
public class ProductB1 implements ProductB
{
public ProductB1()
{
}
}
具体产品类ProdcutB2:
public class ProductB2 implements ProductB
{
public ProductB2()
{
}
}
- 创建模式:Abstract Factory 抽象工厂模式
- Abstract Factory抽象工厂(创建型模式)
- 创建型模式 ABSTRACT FACTORY---抽象工厂
- (创建模式)抽象工厂abstract factory
- Abstract Factory 抽象工厂(创建型模式)
- 【创建型模式】abstract factory(抽象工厂)
- 【创建型模式】abstract factory(抽象工厂)
- 创建型-抽象工厂模式(abstract factory)
- 抽象工厂模式(Abstract Factory)
- Abstract Factory(抽象工厂模式)
- Abstract Factory抽象工厂模式
- 抽象工厂(Abstract Factory)模式
- Abstract Factory 抽象工厂模式
- Abstract Factory 抽象工厂模式
- 抽象工厂(Abstract Factory)模式
- 抽象工厂模式(Abstract Factory)
- 抽象工厂模式(Abstract Factory)
- 抽象工厂模式(Abstract Factory)
- JAVA中String与StringBuffer的区别
- 5-23
- Winsock入门编程示例代码
- 在NS2.33下安装tcl-debug-2.0
- Tas1020bv1p1开发板,隆重推出!
- (创建模式)抽象工厂abstract factory
- gcc相关的环境变量
- 术语:Obfuscation
- 四个必需增值的能力:经济、管理、技术、人脉
- C#软件解决方案_关键词(未完待续)
- 一个可恶的问题
- 记腾讯公司的面试
- 书上P135与课堂讲的作比较(补3月6号作业)
- Java反射