程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#設計模式之適配器設計模式(Adapter)(3)

C#設計模式之適配器設計模式(Adapter)(3)

編輯:關於C語言

四、對象的Adapter模式的結構:

從圖中可以看出:客戶端需要調用Request方法,而Adaptee沒有該方法,為了使客戶端能夠使用Adaptee類,需要提供一個包裝(Wrapper)類Adapter。這個包裝類包裝了一個Adaptee的實例,從而將客戶端與Adaptee銜接起來。由於Adapter與Adaptee是委派關系,這決定了這個適配器模式是對象的。

該適配器模式所涉及的角色包括:

目標(Target)角色:這是客戶所期待的接口。目標可以是具體的或抽象的類,也可以是接口。

源(Adaptee)角色:需要適配的類。

適配器(Adapter)角色:通過在內部包裝(Wrap)一個Adaptee對象,把源接口轉換成目標接口。

五、對象的Adapter模式示意性實現:

下面的程序給出了一個類的Adapter模式的示意性的實現:

// Adapter pattern -- Structural example 
using System;
// "Target"
class Target
{
 // Methods
 virtual public void Request()
 {
  // Normal implementation goes here
 }
}
// "Adapter"
class Adapter : Target
{
 // FIElds
 private Adaptee adaptee = new Adaptee();
 // Methods
 override public void Request()
 {
  // Possibly do some data manipulation
  // and then call SpecificRequest
  adaptee.SpecificRequest();
 }
}
// "Adaptee"
class Adaptee
{
 // Methods
 public void SpecificRequest()
 {
  Console.WriteLine("Called SpecificRequest()" );
 }
}
/**//// <summary>
/// ClIEnt test
/// </summary>
public class ClIEnt
{
 public static void Main(string[] args)
 {
  // Create adapter and place a request
  Target t = new Adapter();
  t.Request();
 }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved