第三课 创建型模式 第三节 抽象工厂模式(Abstract Factory Pattern)
2012-11-27 17:22
519 查看
昨天、今天我学习了抽象工厂设计模式,呵呵。今天做一下学习笔记。主要学习资料来源:《大话设计模式》、云涛的博客
依照惯例先记录一下抽象工厂模式的定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类,注意是一组,也就是说创建的至少是一个对象,我的理解为创建一个产品族对象提供一个接口。
产品族:位于不同产品等级结构中,功能相关联的产品组成的集合。抽象工厂模式提供的一系列产品就是一个产品族。
产品等级结构:相同结构的产品,通常表现为一个产品接口或产品的抽象类。
抽象工厂模式和工厂方法模式的区别:工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。工厂方法模式中的工厂接口提供的方法是创建一个产品,而抽象工厂模式中的工厂接口中提供多个不同的方法,用于创建不同产品结构的相关联的对象。
要点:抽象工厂模式的工厂接口中提供的创建产品的方法个数,取决于产品等级结构的个数,比如存在CPU和主板两个产品等级结构,则工厂接口中存在两个方法 createCPU和createMemory().
示例图:(一下图片来源:/content/4035022.html)
UML图:
代码:
产品接口:
/// <summary>
/// 定义一个CPU产品接口
/// </summary>
public interface CPU
{
/// <summary>
/// 打印出CPU针脚数
/// </summary>
void calculate();
}
public interface Mainboard {
/// <summary>
/// 打印CPU插槽的孔数
/// </summary>
void InstallCPU();
}
//产品等级结构就是:实现同一个产品接口的子类,成为一个产品等级结构,有几个产品接口就有几个产品等级结构。
//产品族:由多个产品等级结构中相关联的产品组成的家族,比如CPU产品和Mainboard产品中,interal的cpu和interal的主板组成一个家族。
产品实现:
public class InteralCPU:CPU
{
public void calculate()
{
Console.WriteLine("Interal CPU的针脚数是755");
}
}
public class AMDCPU : CPU {
public void calculate()
{
Console.WriteLine("AMD CPU的针脚数是785");
}
}
public class InteralMainboard:Mainboard {
public void InstallCPU()
{
Console.WriteLine("Interal 主板的针孔数是755");
}
}
public class AMDMainboard : Mainboard {
public void InstallCPU()
{
Console.WriteLine("AMD 主板的针孔数是785");
}
}
工厂接口:
/// <summary>
/// 提供创建两个不同产品的方法,提供创建不同产品等级结构中功能相关的产品的对象的方法。即创建一个产品族的接口。
/// </summary>
public interface IFactory
{
CPU CreateCPU();
Mainboard CreateMainboard();
}
工厂实现:
/// <summary>
/// 将不同产品等级结构中的相关联的对象封装到一起,形成一个产品族。
/// </summary>
public class InteralFactory : IFactory {
public CPU CreateCPU()
{
return new InteralCPU();
}
public Mainboard CreateMainboard()
{
return new InteralMainboard();
}
}
public class AMDFactory : IFactory
{
public CPU CreateCPU()
{
return new AMDCPU();
}
public Mainboard CreateMainboard()
{
return new AMDMainboard();
}
}
客户端调用:
IFactory f1 = new InteralFactory();
CPU cpu= f1.CreateCPU();
Mainboard main = f1.CreateMainboard();
cpu.calculate();
main.InstallCPU();
Console.ReadLine();
依照惯例先记录一下抽象工厂模式的定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类,注意是一组,也就是说创建的至少是一个对象,我的理解为创建一个产品族对象提供一个接口。
产品族:位于不同产品等级结构中,功能相关联的产品组成的集合。抽象工厂模式提供的一系列产品就是一个产品族。
产品等级结构:相同结构的产品,通常表现为一个产品接口或产品的抽象类。
抽象工厂模式和工厂方法模式的区别:工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。工厂方法模式中的工厂接口提供的方法是创建一个产品,而抽象工厂模式中的工厂接口中提供多个不同的方法,用于创建不同产品结构的相关联的对象。
要点:抽象工厂模式的工厂接口中提供的创建产品的方法个数,取决于产品等级结构的个数,比如存在CPU和主板两个产品等级结构,则工厂接口中存在两个方法 createCPU和createMemory().
示例图:(一下图片来源:/content/4035022.html)
UML图:
代码:
产品接口:
/// <summary>
/// 定义一个CPU产品接口
/// </summary>
public interface CPU
{
/// <summary>
/// 打印出CPU针脚数
/// </summary>
void calculate();
}
public interface Mainboard {
/// <summary>
/// 打印CPU插槽的孔数
/// </summary>
void InstallCPU();
}
//产品等级结构就是:实现同一个产品接口的子类,成为一个产品等级结构,有几个产品接口就有几个产品等级结构。
//产品族:由多个产品等级结构中相关联的产品组成的家族,比如CPU产品和Mainboard产品中,interal的cpu和interal的主板组成一个家族。
产品实现:
public class InteralCPU:CPU
{
public void calculate()
{
Console.WriteLine("Interal CPU的针脚数是755");
}
}
public class AMDCPU : CPU {
public void calculate()
{
Console.WriteLine("AMD CPU的针脚数是785");
}
}
public class InteralMainboard:Mainboard {
public void InstallCPU()
{
Console.WriteLine("Interal 主板的针孔数是755");
}
}
public class AMDMainboard : Mainboard {
public void InstallCPU()
{
Console.WriteLine("AMD 主板的针孔数是785");
}
}
工厂接口:
/// <summary>
/// 提供创建两个不同产品的方法,提供创建不同产品等级结构中功能相关的产品的对象的方法。即创建一个产品族的接口。
/// </summary>
public interface IFactory
{
CPU CreateCPU();
Mainboard CreateMainboard();
}
工厂实现:
/// <summary>
/// 将不同产品等级结构中的相关联的对象封装到一起,形成一个产品族。
/// </summary>
public class InteralFactory : IFactory {
public CPU CreateCPU()
{
return new InteralCPU();
}
public Mainboard CreateMainboard()
{
return new InteralMainboard();
}
}
public class AMDFactory : IFactory
{
public CPU CreateCPU()
{
return new AMDCPU();
}
public Mainboard CreateMainboard()
{
return new AMDMainboard();
}
}
客户端调用:
IFactory f1 = new InteralFactory();
CPU cpu= f1.CreateCPU();
Mainboard main = f1.CreateMainboard();
cpu.calculate();
main.InstallCPU();
Console.ReadLine();
相关文章推荐
- 创建型模式:抽象工厂模式(Abstract Factory Pattern)
- 23种设计模式(3)_创建型_抽象工厂模式(Abstract Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern,对象创建型模式)
- [创建型模式系列]Abstract factory of Design Pattern模式设计之抽象工厂模式
- 抽象工厂模式(Abstract Factory Pattern,对象创建型模式)
- Java设计模式——创建型模式——抽象工厂模式(Abstract Factory Pattern)
- 创建型模式——抽象工厂模式(Abstract Factory Pattern)
- 创建型模式之抽象工厂模式(AbstractFactory Pattern)C++实现******
- 五.创建型设计模式——Abstract Factory Pattern(抽象工厂模式)
- 设计模式(6)——抽象工厂模式(Abstract Factory Pattern,创建型)
- C#面向对象设计模式第三讲:Abstract Factory Pattern 抽象工厂模式(创建型模式)
- 设计模式学习笔记--抽象工厂模式(Abstract Factory Pattern)【创建型模式】
- Net设计模式之抽象工厂模式(Abstract Factory Pattern)(2) 推荐
- 您的设计模式——抽象工厂模式【Abstract Factory Pattern 】
- Java设计模式——抽象工厂模式(Abstract Factory Pattern)
- c++设计模式:抽象工厂模式(Abstract Factory Pattern)
- 解读设计模式----抽象工厂模式(AbstractFactory Pattern)
- 设计模式——抽象工厂模式(AbstractFactoryPattern)
- java设计模式——抽象工厂模式(Abstract Factory Pattern)
- 开发设计模式(八)抽象工厂模式(Abstract Factory Pattern)