简单工厂模式

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace DesignPattern.CreationalPatern
 8 {
 9     #region 简单工厂模式要点
10 
11     //定义:工厂类通过客户端传入的参数来创建产品对象
12 
13     //优点:
14     //1.封装变化,将代码变化的部分移到工厂类
15     //2.解除了对具体对象的依赖,将创建的责任转交给工厂,减轻代码耦合
16     //3.利于代码的复用
17 
18     //缺点:
19     //1.违背开放封闭原则,扩展新的产品对象需要修改工厂类
20     //2.创建产品对象的逻辑都在工厂类中,工厂类若出异常会影响整个系统
21 
22     //使用场景:
23     //1.产品对象类型少且稳定,不会轻易修改的
24     //2.客户端提供参数切不关心对象创建过程
25 
26     #endregion
27 
28 
29     //步骤:1.根据客户端传入参数创建具体对象,返回该具体对象的抽象父类
30     public class SimpleFactoryPattern
31     {
32         public static Season GetSeason(SeasonName seasonName)
33         {
34             Season _season = null;
35             switch (seasonName)
36             {
37                 case SeasonName.SPRING:
38                     break;
39                 case SeasonName.SUMMER:
40                     _season = new Summer();
41                     break;
42                 case SeasonName.FALL:
43                     break;
44                 case SeasonName.WINTER:
45                     _season = new Winter();
46                     break;
47                 default:
48                     break;
49             }
50 
51             return _season;
52         }
53     }
54 
55     public abstract class Season 
56     {
57         public abstract void Pirnt();
58     }
59 
60     public class Spring : Season
61     {
62         public override void Pirnt()
63         {
64             Console.WriteLine("春天");
65         }
66     }
67 
68 
69     public class Summer : Season
70     {
71         public override void Pirnt()
72         {
73             Console.WriteLine("夏天");
74         }
75     }
76     public class Fall : Season
77     {
78         public override void Pirnt()
79         {
80             Console.WriteLine("秋天");
81         }
82     }
83 
84     public class Winter : Season
85     {
86         public override void Pirnt()
87         {
88             Console.WriteLine("冬天");
89         }
90     }
91 
92     public enum SeasonName
93     {
94         SPRING,
95         SUMMER,
96         FALL,
97         WINTER
98     }
99 }

 

posted on 2021-06-25 09:23  HowieGo  阅读(29)  评论(0)    收藏  举报

导航