您的位置:首页 > 其它

简单工厂模式(Simple Factory)示例源码

2008-08-13 01:01 483 查看
* 模式分析

简单工厂模式根据提供给它的数据,返回几个类中的一个类的实例,通常返回的类都有一个公共父类和公共方法.

* 实施过程

Love

HaBaoZhuLove XueHaiYingLove
LoveSimpleFactory
+ Create(string LoveWho) :Love

* 源码分析与实现

~ 工厂类角色LoveSimpleFactory:工厂类在客户端的直接控制下(Create方法)创建产品对象.

~ 抽象产品角色Love:定义简单工厂创建的对象的父类或它们共同拥有的接口.可以是一个类,抽象类或接

口.

~ 具体产品角色HaBaoZhuLove,XueHaiYingLove:定义工厂具体加工出的对象.

控制台程序:program.cs

1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4
5 /*该源码由邹江平2008-8-12编写,如有学习者请与QQ:200580231联系*/
6 namespace X8023Z//命名空间
7 {
8 class Program
9 { //在客户端类中调用工厂类LoveSimpleFactory中的Create方法,创建产品对象
10 static void Main(string[] args)
11 {
12 LoveSimpleFactory lsf = new LoveSimpleFactory();
13 Love l = lsf.Create("哈宝猪");
14 l.Start();
15 l.End();
16 Console.WriteLine("-----------------");
17 l = lsf.Create("薛海英");
18 l.Start();
19 l.End();
20
21 }
22 }
23 //定义抽象类Love,并声明两个抽象方法
24 public abstract class Love
25 {
26 public abstract void Start();
27 public abstract void End();
28 }
29 //定义类HaBaoZhuLove,继承抽象类Love,然后实现Start()和End()方法
30 public class HaBaoZhuLove : Love
31 {
32 public override void Start()
33 {
34 Console.WriteLine("开始爱哈宝猪!");
35 Console.WriteLine("请按任意键继续 !");
36 Console.Read();
37 }
38
39 public override void End()
40 {
41 Console.WriteLine("爱哈宝猪结束!");
42 Console.WriteLine("请按任意键退出 !");
43 Console.Read();
44 Console.Read();
45 }
46 }
47 //定义类XueHaiYingLove,继承抽象类Love,然后实现Start()和End()方法
48 public class XueHaiYingLove : Love
49 {
50 public override void Start()
51 {
52 Console.WriteLine("开始爱薛海英!");
53 Console.WriteLine("请按任意键继续 !");
54 Console.Read();
55 }
56
57 public override void End()
58 {
59 Console.WriteLine("爱薛海英结束!");
60 Console.WriteLine("请按任意键继续 !");
61 Console.Read();
62 }
63 }
64 //定义LoveSimpleFactory类,该类实现工厂生产工作,故通过Create生产HaBaoZhu和XueHaiYing.
65 public class LoveSimpleFactory
66 {
67 public Love Create(string LoveWho)
68 {
69 if (LoveWho == "哈宝猪")
70 return new XueHaiYingLove();
71 else if (LoveWho == "薛海英")
72 return new HaBaoZhuLove();
73 else
74 return null;
75 }
76 }
77
78 }
79

/*该源码由邹江平2008-8-12编写,如有学习者请与QQ:200580231联系*/

* 补充说明

优点:工厂类含有必要的判断逻辑,可以决定在什么时候创建一个产品类的实例,客户端可以免除直接创建

产品对象的责任,而仅仅"消费"产品.简单工厂模式实现了对责任的分割.

缺点:当产品有复杂的多层等级结构时,工厂类只有自己,以不变应万变,就是模式的特点.因为工厂类集中了

所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响,同时,系统扩展困难,一旦添加新产品

就不得不修改工厂逻辑,有可能造成工厂逻辑过于复杂

/*该源码由邹江平2008-8-12编写,如有学习者请与QQ:200580231联系*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: