抽象工廠模式

概述

  抽象工廠提供一個建立產品的接口來負責建立相關或依賴的對象,而不具體明確指定具體類。也能夠這樣理解,它負責建立某一特定系列產品,可是它只提供接口方法。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

相關文章
相關標籤/搜索