设计模式学习笔记--Abstract Factory抽象工厂模式
2009-09-27 08:44
411 查看
有这样一种场景:世界杯外围赛,有资格参加比赛的国家都会派出自己的球队。我们可以将每个国家的球队看成是一组系列化的对象,因为在这一支球队中,有领队,教练,球员等角色,每一种角色都是一类对象。而每个国家派出的球队都有这些固定的角色。但不同的球队这些角色的具体对象又不一样。
这就是抽象工厂适用的情景:提供一个创建一系列(上面的一个球队就是一个系列)相关或相互依赖对象(球队中的领队,教练,球员之间就是相关和相互依赖的关系)的接口,而无需指定它们具体的类(指不用直接定义和创建每一个具体的球队)。所以,它针对的的产品系列的情况。
下面,我们就来实现抽象工厂。
程序如下图:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
二、定义抽象工厂类,这里我们定义了球队的抽象工厂类AbstractCreateTeamFactory
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
{
// 抽象工厂(Abstract Factory)角色:担任这个角色的是工厂方法模式的核心,它是与应用系统商业逻辑无关的。它负责声明生成一系列抽象产品的方法
//本例就是负责声明生成球队这个系列中各个抽象产品(其内的领队,教练和球员)的方法
public abstract class AbstractCreateTeamFactory
{
public abstract Leader CreateLeader(); //生成领队的方法
public abstract Coach CreateCoach(); //生成教练的方法
public abstract Players CreatePlayer();//生成球员的方法
}
}
三、定义具体产品类,这里我们定义了中国队ChinaTeam和澳大利亚队AustraliaTeam两个队
中国队ChinaTeam
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
澳大利亚队AustraliaTeam
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
四、定义具体工厂类,这里我们定义了中国队具体工厂ChinaTeamFactory和澳大利亚队具体工AustraliaTeamFactory厂
中国队ChinaTeamFactory
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
澳大利亚队AustraliaTeamFactory
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
五、TeamsCreater
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
六、客户端应用抽象工厂
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
运行效果如下:
前往:设计模式学习笔记清单
这就是抽象工厂适用的情景:提供一个创建一系列(上面的一个球队就是一个系列)相关或相互依赖对象(球队中的领队,教练,球员之间就是相关和相互依赖的关系)的接口,而无需指定它们具体的类(指不用直接定义和创建每一个具体的球队)。所以,它针对的的产品系列的情况。
下面,我们就来实现抽象工厂。
程序如下图:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
二、定义抽象工厂类,这里我们定义了球队的抽象工厂类AbstractCreateTeamFactory
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
{
// 抽象工厂(Abstract Factory)角色:担任这个角色的是工厂方法模式的核心,它是与应用系统商业逻辑无关的。它负责声明生成一系列抽象产品的方法
//本例就是负责声明生成球队这个系列中各个抽象产品(其内的领队,教练和球员)的方法
public abstract class AbstractCreateTeamFactory
{
public abstract Leader CreateLeader(); //生成领队的方法
public abstract Coach CreateCoach(); //生成教练的方法
public abstract Players CreatePlayer();//生成球员的方法
}
}
三、定义具体产品类,这里我们定义了中国队ChinaTeam和澳大利亚队AustraliaTeam两个队
中国队ChinaTeam
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
澳大利亚队AustraliaTeam
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
四、定义具体工厂类,这里我们定义了中国队具体工厂ChinaTeamFactory和澳大利亚队具体工AustraliaTeamFactory厂
中国队ChinaTeamFactory
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
澳大利亚队AustraliaTeamFactory
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
五、TeamsCreater
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
六、客户端应用抽象工厂
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAbstractFactory
运行效果如下:
前往:设计模式学习笔记清单
相关文章推荐
- 设计模式学习笔记(三)——Abstract Factory抽象工厂模式
- 四 抽象工厂模式——设计模式学习笔记
- java/android 设计模式学习笔记(4)---抽象工厂模式
- 设计模式学习笔记(三)——Abstract Factory抽象工厂模式 (转)
- java设计模式学习笔记-抽象工厂模式
- 【设计模式】学习笔记6:抽象工厂模式(Abstract Factory)
- 设计模式学习笔记——抽象工厂模式
- java设计模式学习笔记--抽象工厂模式
- 设计模式学习笔记--抽象工厂模式
- 设计模式学习笔记-抽象工厂模式
- 设计模式学习笔记(3) - 抽象工厂模式
- 设计模式学习笔记(六):抽象工厂模式
- 设计模式之--抽象工厂模式(学习分析笔记)
- 设计模式C++学习笔记之七(AbstractFactory抽象工厂模式)
- 设计模式学习笔记(三)——Abstract Factory抽象工厂模式
- 设计模式C++学习笔记之七(AbstractFactory抽象工厂模式)
- java学习笔记-设计模式4(抽象工厂模式)
- 设计模式C++学习笔记之七(AbstractFactory抽象工厂模式)
- 设计模式C++学习笔记之七(AbstractFactory抽象工厂模式)