結構型模式學習筆記(二)

來源:互聯網
上載者:User

學習結構模式是我們很快能像到的是Adapter ,Bridge,等等的設計模式,我們就有疑問這些為什麼總結到結 構型設計模式中,在實際的設計過程中怎樣選擇合適的設計結構型模式。

     結構型設計模式是通過對類和對象的組合產生更大的結構來滿足在設計過程中對軟體的安全性,可擴充性,有效性等等的要求的實現。同時,結構型建立模式可以實現在實際啟動並執行環境中,對象可以動態實現之間的組合關係。

    

     下面就具體的說明每一個結構型模式

 

2.1 Adapter Pattern (適配器模式)

功能

 將一個類的介面轉化成需要的另外的一個介面,Adapter 模式將原來不相容的類也能在一起工作。

 

使用的原因

   在當前的開發環境中,有類包含著需要的資訊,但這個類和我們定義的介面不匹配,對於資訊來講兩者資訊是相似的。(這樣提供了轉化的可能)

 

Adapter Pattern 的實現

   對於Adapter Pattern 來講就是

1 設計現在系統中需要的介面

2 設計適配器來實現這個介面(在適配器中還是包含著需要轉換的類)

 

舉例

我們現在開發一個報表的子系統,我們需要一個時間的類,這個類中包含了對時間的顯示的處理。在現實的報表中日期包含了好多顯示的形式 (二零零五年六月,2005年6月 ,。。。),在dot net 的類庫中包含了 DateTime  這個類,DateTime 類包含了時間的資訊。

和我們需要的介面一樣包含了時間的資訊(資訊的本質上是沒有差別的)。對於我們需要的介面來講 ,我們需要對時間的顯示進行特殊的處理,而對於其他的時間的比較功能還是和DateTime類是一樣的

 

在這樣的情況下我們就需要Adapter Pattern模式來實現對介面的實現。

 

代碼實現

/**//// <summary>

     /// Client 的摘要說明。

     /// </summary>

     class Client

     {

         /**//// <summary>

         /// 應用程式的主進入點。

         /// </summary>

         [STAThread]

         static void Main(string[] args)

         {

              ChineseDateTime chi=new ChineseDateTime(DateTime.Now);

              Console.WriteLine(chi.chineseYearDate());

     

         }

     }

 

     public enum ChineseNum{零,一,二,三,四,五,六,七,八,九}

     public class ChineseDateTime

     {

         private DateTime _datetime;

 

         public ChineseDateTime(DateTime Param_DateTime)

         {

              this._datetime =Param_DateTime;

         }

         

         /**//// <summary>

         /// get the day 

         /// </summary>

         public  int Day

         {

              get

              {

                   return this._datetime.Day;

              }

         }

         /**//// <summary>

         /// get chinese date Style such as '二零零五年'

         /// </summary>

         /// <returns></returns>

         public string chineseYearDate()

         {

              string year=this._datetime.Year.ToString();

              string ChineseYear=string.Empty ;

              for(int index=0;index<year.Length ;index++)

              {

                   ChineseYear+=((ChineseNum)int.Parse(year.Substring(index,1))).ToString();

              }

              ChineseYear+="年";
              return ChineseYear;
         }

 

     }

}

 

2.2 Bridge Pattern (橋接)

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.