抽象工厂模式

概述

  抽象工厂提供一个建立产品的接口来负责建立相关或依赖的对象,而不具体明确指定具体类。也能够这样理解,它负责建立某一特定系列产品,可是它只提供接口方法。ide

抽象工厂的意义

  假如咱们去理发店,给师傅说剪个平头,师傅可能使用推子;剪个杀马特,师傅可能会使用剪刀。咱们说出理发的需求,理发师傅就会用不一样的处理方法知足咱们的需求,咱们把需求抽象,这样咱们就能够增长具体类来丰富咱们的需求;一样,咱们把方法抽象,咱们也能够来丰富咱们的处理方法。这样,咱们就不须要修改咱们的源代码,直接增长需求和方法的具体类,增长了代码的可扩展性。(开放-闭合原则:对扩展开放,对修改关闭)spa

实现抽象工厂类

  这里涉及到2个抽象类,即需求和方法:code

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace AbstractFactory
 7 {
 8     //需求 抽象类
 9     public abstract class Factory
10     {
11         public abstract Method HairStyle();
12     }
13 
14     //方法 抽象类
15     public abstract class Method
16     {
17         public abstract void UseMethod();
18     }
19 
20 /// <summary>
21 /// 平头
22 /// </summary>
23     public class pingtouFactory : Factory
24     {
25         public override Method HairStyle()
26         {
27             Console.WriteLine(" 需求: 平头");
28             return new pingtouMethod();
29         }
30     }
31     public class pingtouMethod : Method
32     {
33         public override void UseMethod()
34         {
35              Console.WriteLine(" 方法: 平头\n");
36         }
37     }
38 //
39 
40 /// <summary>
41 /// 杀马特
42 /// </summary>
43      public class shamateFactory : Factory
44     {
45          public override Method HairStyle()
46         {
47             Console.WriteLine(" 需求: 杀马特");
48             return new shamateMethod();
49         }
50     }
51     public class shamateMethod : Method
52     {
53         public override void UseMethod()
54         {
55             Console.WriteLine(" 方法: 杀马特\n");
56         }
57     }
58 
59     class Program
60     {
61         static void Main(string[] args)
62         {
63             Factory p = new pingtouFactory();
64             p.HairStyle().UseMethod();
65 
66             Factory s = new shamateFactory();
67             s.HairStyle().UseMethod();
68         }
69     }
70 }

若是咱们还须要其余发型,咱们只须要增长需求发型的具体类和方法类便可。不须要修改原来的代码。对象

 可是这里的需求和方法是一一对应的,咱们并不能增长一个需求的另一种或者多种方法。由于接口只有一个,增长多种方法,就须要修改抽象接口类。blog

相关文章
相关标签/搜索