极速理解设计模式系列:21.简单工厂模式(Simple Factory Pattern)
2011-12-12 13:41
651 查看
四个角色:抽象产品(Product)、具体产品(Concrete Product)、工厂(Creator)、客户端(Client)
抽象产品(Product):需要创建的各种产品的父类。这类产品有共同的接口。
具体产品(Concrete Product):需要创建的具体对象。
工厂(Creator):内部逻辑可以控制生成目标对象。
客户端(Client):实例化工厂,然后工厂根据传入参数得到各种产品。调用产品实现不同功能。
实现思路:首先将工厂实例化,然后使用工厂创建产品赋值给抽象产品的引用,然后通过抽象产品的公共接口调用具体产品的方法以实现功能。
[b]类图:[/b]
应用场景:苹果公司的工厂生产iphone 4、ipad 2、ipod nano 6。
分析:这里多种产品都可以运行,所以有一个公共方法,然后抽象为父类。
下面我们在控制台程序去演示一下如何使用Simple Factory Pattern:
一、抽象产品(Product):
二、具体产品(Concrete Product):
三、工厂(Creator):
四、客户端(Client):
如需源码请点击 SimpleFactoryPattern.rar 下载。
抽象产品(Product):需要创建的各种产品的父类。这类产品有共同的接口。
具体产品(Concrete Product):需要创建的具体对象。
工厂(Creator):内部逻辑可以控制生成目标对象。
客户端(Client):实例化工厂,然后工厂根据传入参数得到各种产品。调用产品实现不同功能。
实现思路:首先将工厂实例化,然后使用工厂创建产品赋值给抽象产品的引用,然后通过抽象产品的公共接口调用具体产品的方法以实现功能。
[b]类图:[/b]
应用场景:苹果公司的工厂生产iphone 4、ipad 2、ipod nano 6。
分析:这里多种产品都可以运行,所以有一个公共方法,然后抽象为父类。
下面我们在控制台程序去演示一下如何使用Simple Factory Pattern:
一、抽象产品(Product):
//抽象产品(Product) abstract class Apple { public abstract void Run(); }
二、具体产品(Concrete Product):
//具体产品(Concrete Product) class Iphone : Apple { public override void Run() { Console.WriteLine("iphone 4 开始运行!"); } } //具体产品(Concrete Product) class Ipad : Apple { public override void Run() { Console.WriteLine("ipad 2 开始运行!"); } } //具体产品(Concrete Product) class IpodNano : Apple { public override void Run() { Console.WriteLine("ipod Nano 6 开始运行!"); } }
三、工厂(Creator):
//工厂(Creator) class AppleFactory { public Apple CreateApple(string productName) { switch (productName.ToUpper()) { case "IPHONE": return new Iphone(); case "IPAD": return new Ipad(); case "IPODNANO": return new IpodNano(); default: return null; } } }
四、客户端(Client):
//客户端(Client) class Program { static void Main(string[] args) { AppleFactory factory = new AppleFactory(); Apple iphone= factory.CreateApple("iphone"); iphone.Run(); Apple ipad = factory.CreateApple("ipad"); ipad.Run(); Apple ipodnano = factory.CreateApple("ipodnano"); ipodnano.Run(); Console.ReadLine(); } }
如需源码请点击 SimpleFactoryPattern.rar 下载。
相关文章推荐
- 极速理解设计模式系列:21.简单工厂模式(Simple Factory Pattern)
- 极速理解设计模式系列:3.简单工厂模式(Simple Factory Pattern)
- 极速理解设计模式系列:4.抽象工厂模式(Abstract Factory Pattern)
- 我所理解的设计模式(C++实现)——简单工厂模式(Simple Factory Pattern)
- 极速理解设计模式系列:10.抽象工厂模式(Abstract Factory Pattern)
- 极速理解设计模式系列:10.抽象工厂模式(Abstract Factory Pattern)
- 设计模式之简单工厂模式(Simple Factory Pattern)
- 简单工厂模式(SimpleFactoryPattern)- 最易懂的设计模式解析
- 设计模式学习笔记一:Simple factory pattern,简单工厂模式
- 解读设计模式----简单工厂模式(SimpleFactory Pattern),你要什么我就给你什么
- Net设计模式实例之简单工厂模式(Simple Factory Pattern)
- Net设计模式实例之简单工厂模式(Simple Factory Pattern)
- 设计模式——简单工厂模式(SimpleFactory Pattern)
- 设计模式之八:简单工厂模式(Simple Factory pattern)
- Net设计模式实例之简单工厂模式(Simple Factory Pattern)
- c++设计模式:简单工厂模式(Simple Factory Pattern)
- 设计模式(二)简单工厂模式(Simple Factory Pattern)
- 极速理解设计模式系列:6.适配器模式(Adapter Pattern)
- 极速理解设计模式系列:2.工厂方法模式(Factory Method Pattern)
- 设计模式之简单工厂模式(Simple Factory Pattern)