zoukankan      html  css  js  c++  java
  • C#设计模式--工厂方法模式

    0.C#设计模式-简单工厂模式

    设计模式:

    工厂方法模式(Factory Method Pattern)

    介绍:简单工厂模式是要在工厂类中通过数据来做个决策,在工厂类中的多个类中实例化出来其中一个要用到的类,做运算。而工厂方法模式则是他的一个的扩展,不在工厂类中做区分从而创建对应的类,而是把这个选择决策权力交给使用类的用户决定。可扩展性比简单工厂模式要好很多

    工厂方法模式类图:

    工厂方法模式C#代码举例:

    MobilePhone类手机类

    1  public abstract class MobilePhone
    2     {
    3         public abstract void print();
    4     }

    Iphone 类 苹果手机类

    1 public class Iphone : MobilePhone
    2     {
    3         public override void print()
    4         {
    5             Console.WriteLine("我是苹果手机!");
    6         }
    7     }

    XiaoMI 类 小米手机类

    1  public class XiaoMI:MobilePhone
    2     {
    3         public override void print()
    4         {
    5             Console.WriteLine("我是小米手机");
    6         }
    7     }

    SmarTisan类 锤子手机类

    1 public class SmarTisan : MobilePhone
    2     {
    3         public override void print()
    4         {
    5             Console.WriteLine("我是锤子手机!");
    6         }
    7     }

    MobilePhoneFactory 类 手机工厂类

    1  public abstract class MobilePhoneFactory
    2     {
    3         public abstract MobilePhone Create();
    4     }

    IphoneFactory 类 苹果手机工厂类

    1  public class IphoneFactory:MobilePhoneFactory
    2     {
    3         public override MobilePhone Create()
    4         {
    5             return new Iphone();
    6         }
    7     }

    XiaoMiFactory类 小米手机工厂类

    1  public class XiaoMiFactory:MobilePhoneFactory
    2     {
    3         public override MobilePhone Create()
    4         {
    5             return new XiaoMI();
    6         }
    7     }

    SmarTisanFactory类 锤子手机工厂类

    1  public class SmarTisanFactory:MobilePhoneFactory
    2     {
    3         public override MobilePhone Create()
    4         {
    5             return new SmarTisan();
    6         }
    7     }

    测试

    (即使每次增加新的品牌,只需要增加新品牌的类,以及对应工厂即可使用,方便扩展)

     1  class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             //创建苹果手机工厂
     6             MobilePhoneFactory mobilePhoneFactoryIphone = new IphoneFactory();
     7             //苹果手机工厂创建手机
     8             MobilePhone mobilePhoneIphone = mobilePhoneFactoryIphone.Create();
     9             //由苹果工厂创建苹果手机
    10             mobilePhoneIphone.print();
    11 
    12 
    13             //小米工厂生产小米手机
    14             MobilePhoneFactory mobilePhoneFactoryXiaoMi = new XiaoMiFactory();
    15             MobilePhone mobilePhoneXiaoMi = mobilePhoneFactoryXiaoMi.Create();
    16             mobilePhoneXiaoMi.print();
    17 
    18 
    19             //锤子手机工厂生产锤子手机
    20             MobilePhoneFactory mobilePhoneFactorySmarTisan = new SmarTisanFactory();
    21             MobilePhone mobilePhoneSmarTisan = mobilePhoneFactorySmarTisan.Create();
    22             mobilePhoneSmarTisan.print();
    23 
    24             Console.Read();
    25 
    26         }
    27     }

    运行结果:

    源码工程文件

  • 相关阅读:
    Oracle PL/SQL
    plsql命令行窗口执行脚本打印输出
    Oracle 数据库维护管理之--数据库基本信息表管理与优化参考1
    Oracle 数据库维护管理之--dbms_lock
    Oracle sys或者system的默认密码
    Docker学习--docker的基本认识
    正则表达式--指定时间格式校验
    Docker学习--基本docker命令
    HTTP协议以及HTTP请求中8种请求方法
    如何查看class文件的jdk版本
  • 原文地址:https://www.cnblogs.com/JiYF/p/6409258.html
Copyright © 2011-2022 走看看