C#設計模式——適配器模式(Adapter Pattern)


一、概述
在軟件開發中,常常會想要復用一個已經存在的組件,但該組件的接口卻與我們的需要不相符,這時我們可以創建一個適配器,在需復用的組件的接口和我們需要的接口間進行轉換,從而能夠正常的使用需復用的組件。這就是適配器模式。
二、適配器模式
適配器模式將一個類的接口轉換成客戶希望的另一個接口,使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。
適配器模式可分為類適配器和對象適配器兩種,類適配器使用多重繼承對兩個接口進行匹配,對象適配器則依賴於對象的組合。
類適配器模式的結構圖如下:

對象適配器模式的結構圖如下:

Target定義了客戶需要使用的接口。
Adaptee定義了已經存在的那個接口,該接口需要通過適配器轉換成Target接口以便Client調用。
Adapter對Adaptee接口和Target接口進行適配。
三、示例
我們來看一下適配器模式的應用場景。假定.NET類庫中沒有實現Stack,而我們在應用中需要用到Stack,這時就可以通過適配器模式將List的接口轉換為Stack需要的接口。
首先定義Stack接口

1     interface IStack<T>
2     {
3         void Push(T item);
4         T Pop();
5     }

接口實現Adapter

 1     public class MyStack<T> : IStack<T>
 2     {
 3         private List<T> _list = new List<T>();
 4 
 5         public void Push(T item)
 6         {
 7             _list.Add(item);
 8         }
 9 
10         public T Pop()
11         {
12             T item = _list[_list.Count - 1];
13             _list.RemoveAt(_list.Count - 1);
14             return item;
15         }
16 
17         public void PrintAll()
18         {
19             Console.WriteLine("Begin Print Stack Item");
20             foreach (T item in _list)
21             {
22                 Console.WriteLine(item.ToString());
23             }
24             Console.WriteLine("End Print Stack Item");
25         }
26     }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM