• 简单工厂模式


     

        采用简单工厂的优点是可以使用户根据参数获得对应的类实例,避免了直接实例化类,降低了耦合性;缺点是可实例化的类型在编译期间已经被确定,如果增加新类 型,则需要修改工厂,不符合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("类型条件名")即可生成你的类对象了。

  • 相关阅读:
    mysql6.0免安装配置
    SQL2005安装时“性能监视器计数器要求(错误)”解决办法
    Centos 下解压和压缩rar文件
    MyEclipse插件介绍与下载
    算法设计之递归法
    Centos5.2 下安装MySQL+Tomcat6 及设置自启动
    科学用电脑
    浅谈Linux的安全设置
    JAVA程序员之路
    CentOS 5.5 挂载Windows NTFS 文件系统
  • 原文地址:https://www.cnblogs.com/zyy1688/p/10002530.html
Copyright © 2020-2023  润新知