zoukankan      html  css  js  c++  java
  • 工厂方法模式

           工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

           

           故事:雷锋依然在人间

           小菜班里有个叫薛磊风的同学,大学期间一直在帮助一个老人,说自己是学雷锋,但是这段时间他出事受伤了,希望班里的同学能帮忙照顾老人。

    Leifeng.cs

     1 namespace FactoryMethodPattern
     2 {
     3     //雷锋类
     4     class Leifeng
     5     {
     6         public void Sweep()
     7         {
     8             Console.WriteLine("扫地");
     9         }
    10         public void Wash()
    11         {
    12             Console.WriteLine("洗衣");
    13         }
    14         public void BuyRice()
    15         {
    16             Console.WriteLine("买米");
    17         }
    18     }
    19 
    20     //学雷锋的大学生类
    21     class Undergraduate : Leifeng { }
    22     //社区志愿者类
    23     class Volunteer : Leifeng { }
    24 
    25 
    26 
    27     //雷锋工厂
    28     interface IFactory
    29     {
    30         Leifeng CreateLeifeng();
    31     }
    32 
    33     //学雷锋的大学生工厂
    34     class UndergraduateFactory : IFactory
    35     {
    36         public Leifeng CreateLeifeng()
    37         {
    38             return new Undergraduate();
    39         }
    40     }
    41     //社区志愿者工厂
    42     class VolunteerFactory : Leifeng
    43     {
    44         public Leifeng CreateLeifeng()
    45         {
    46             return new Volunteer();
    47         }
    48     }
    49 }

    Program.cs

     1 namespace FactoryMethodPattern
     2 {
     3     class Program
     4     {
     5         static void Main(string[] args)
     6         {
     7             IFactory factory = new UndergraduateFactory();  //换成社区志愿者,改这里就可以了
     8             Leifeng student = factory.CreateLeifeng();
     9 
    10             student.BuyRice();
    11             student.Sweep();
    12             student.Wash();
    13 
    14             Console.Read();
    15         }
    16     }
    17 }
  • 相关阅读:
    代码 技术债务 打分
    C++ boost coroutine
    什么是 Python Django Flask &Tornado
    Quartz应用与集群原理分析
    和开源产品对比
    Apache Storm || Processing real-time data
    认清自我,不在迷茫 程序员
    快速傅里叶变换算法
    Netty和Tomcat的区别、性能对比
    HTTP vs. MQTT ->TCP
  • 原文地址:https://www.cnblogs.com/nullcodeworld/p/9365252.html
Copyright © 2011-2022 走看看