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

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

編輯:關於C語言

六、在什麼情況下使用適配器模式

在以下各種情況下使用適配器模式:

1、系統需要使用現有的類,而此類的接口不符合系統的需要。

2、想要建立一個可以重復使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。這些源類不一定有很復雜的接口。

3、(對對象適配器而言)在設計裡,需要改變多個已有子類的接口,如果使用類的適配器模式,就要針對每一個子類做一個適配器,而這不太實際。

七、一個實際應用Adapter模式的例子

下面的程序演示了Class Adapter與Object Adapter的應用。

// Example of implementing the Adapter pattern
using System;
// Target
public interface ICar
{
 void Drive();
}
// Direct use without Adapter
public class CToyota : ICar
{
 public void Drive()
 {
  Console.WriteLine("Vroom Vroom, we're off in our Toyota");
 }
}
// Adaptee
public class CCessna
{
 public void Fly()
 {
  Console.WriteLine("Static runup OK, we're off in our C172");
 }
}
// Class Adapter
public class CDrivableCessna : CCessna, ICar
{
 public void Drive() { base.Fly(); }
}
// Object Adapter
public class CDrivableCessna2 : ICar
{
 private CCessna m_oContained;
 public CDrivableCessna2()
 {
  m_oContained = new CCessna();
 }
 public void Drive() { m_oContained.Fly(); }
}
// ClIEnt
public class ClIEnt
{
 public static void Main(string[] args)
 {
  ICar oCar = new CToyota();
  Console.Write("Class Adapter: Driving an Automobile");
  oCar.Drive();
  oCar = new CDrivableCessna();
  Console.Write("Driving a Cessna");
  oCar.Drive();
  oCar = new CDrivableCessna2();
  Console.Write(" Object Adapter: Driving a Cessna");
  oCar.Drive();
 }
}

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