标签:views pop rac toolbar tps bsp stat oid 实现
采用简单工厂的优点是可以使用户根据参数获得对应的类实例,避免了直接实例化类,降低了耦合性;缺点是可实例化的类型在编译期间已经被确定,如果增加新类 型,则需要修改工厂,不符合OCP(开闭原则)的原则。简单工厂需要知道所有要生成的类型,当子类过多或者子类层次过多时不适合使用。
下面是我实例中的类结构图,它有一个ICreate的公共接口,有一个方法叫Create,返回值为Void
其中公用的接口代码如下:(最后工厂的返回值类型)
1 /// <summary>
2 /// 简单工厂接口,返回值类型
3 /// </summary>
4 public interface ICreate
5 {
6 void Create();
7 }
而下面,分别用people和animal两个类去实现了ICreate接口,并实现了它的Create方法。
1 /// <summary>
2 /// 人类实现工厂接口
3 /// </summary>
4 public class People : ICreate
5 {
6
7 #region ICreate 成员
8
9 public void Create()
10 {
11 Console.WriteLine("创建人类");
12 }
13
14 #endregion
15 }
16 /// <summary>
17 /// 动物实现工厂接口
18 /// </summary>
19 public class Animal : ICreate
20 {
21
22 #region ICreate 成员
23
24 public void Create()
25 {
26 Console.WriteLine("创建动物");
27 }
28
29 #endregion
30 }
而对于外界来说,会有另一个类去为外界提供服务,它们可以需要建立People或者Animal类型的实现,代码如下:
1 public class CreateFactory
2 {
3 public static ICreate GeneratorCreate(string createName) {
4 switch (createName)
5 {
6 case "People":
7 return new People();
8 case "Animal":
9 return new Animal();
10 default:
11 throw new NotImplementedException();
12 }
13 }
最后,在使用它时,直接使用CreateFactory.GeneratorCreate("类型条件名")即可生成你的类对象了。
标签:views pop rac toolbar tps bsp stat oid 实现
原文地址:https://www.cnblogs.com/zyy1688/p/10002530.html