设计模式C#描述——抽象工厂模式
来源:互联网 发布:江苏省旅游收入数据库 编辑:程序博客网 时间:2024/06/03 19:24
抽象工厂模式是对象的创建模式,它是工厂方法模式的进一步推广。
采用抽象工厂模式设计出的系统类图如下。
从上图可以看到,抽象工厂模式设计到以下的角色:
抽象工厂角色:担任这个角色的是工厂方法模式的核心,它是与应用系统的商业逻辑无关的。通常使用接口或抽象类实现。
具体工厂角色:这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻辑,而这个逻辑是与应用系统的商业逻辑紧密相关的。通常使用具体的类实现。
抽象产品角色:担任这个角色的类是抽象工厂方法模式所创建的对象的父类,或它们共同拥有的接口。通常使用接口或抽象类实现这一角色。
具体产品角色:抽象工厂模式所创建的任何产品对象都是某一具体产品类的实例。这是客户端最终需要的东西。通常使用具体类实现这个角色。
下面给出这个系统的原代码:
Creator:
public interface Creator
{
ProductA factoryA();
ProductB factoryB();
}
ConcreteCreator1:
public class ConcreteCreator1:Creator
{
public ProductA factoryA()
{
return new ProductA1();
}
public ProductB factoryB()
{
return new ProductB1();
}
}
ConcreteCreator2:
public class ConcreteCreator2:Creator
{
public ProductA factoryA()
{
return new ProductA2();
}
public ProductB factoryB()
{
return new ProductB2();
}
}
ProductA:
public interface ProductA
{
}
ProductA1:
public class ProductA1:ProductA
{
public ProductA1()
{
}
}
ProductA2:
public class ProductA2:ProductA
{
public ProductA2()
{
}
}
ProductB:
public interface ProductB
{
}
ProductB1:
public class ProductB1:ProductB
{
public ProductB1()
{
}
}
ProductB2:
public class ProductB2:ProductB
{
public ProductB2()
{
}
}
在以下情况下应该使用抽象工厂模式:
一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。
这个系统的产品有多于一个的产品族,而系统只消费其中某一族的产品。
同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。
系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。
- 设计模式C#描述——抽象工厂模式
- 设计模式C#描述——抽象工厂模式
- 设计模式C#描述——抽象工厂模式
- 设计模式C#描述——抽象工厂模式
- 设计模式C#描述——抽象工厂模式
- 设计模式C#描述——抽象工厂模式
- 设计模式C#描述——抽象工厂模式
- 设计模式C#描述——抽象工厂模式
- C#设计模式—抽象工厂模式
- 设计模式C#描述之——简单工厂模式、抽象工厂模式、单例与多例模式
- 设计模式C#描述之——简单工厂模式、抽象工厂模式、单例与多例模式
- 设计模式C#描述——抽象工厂模式
- 设计模式C#描述之——简单工厂模式
- 设计模式C#描述——工厂方法模式
- 设计模式C#描述之——简单工厂模式
- 设计模式C#描述——工厂方法模式
- 设计模式C#描述之——简单工厂模式
- 设计模式C#描述——工厂方法模式
- Sql调试带输出的存储过程
- 试用 Windows Live Writer
- 搭建程序在线测评系统
- C++中的内存分布
- 设计阶段的考虑问题
- 设计模式C#描述——抽象工厂模式
- 两个小项目
- spring事务详解
- 泛型
- 堆区和栈区的区别
- 每个java 初学者都应该明白的
- 提高工作效率的7种方法
- 电脑的生活
- 企业应用系统平台软件分析---1. 信息化系统模型