日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式理解:模板方法

發布時間:2024/10/14 asp.net 107 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式理解:模板方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模板方法屬于類行為型模式,通常定義出一個穩定的骨架,特定的內容的實現延遲至子類中去實現。

在模板方法的實現思想:將穩定的部分實現,把容易變化的部分開放給實際使用者實現。

模板方法的常見例子:繼承,虛函數等。

例如在JAVA像利用線程實現下載功能,你只需要定義一個線程實現run方法就行。對于Library開發者不需要去實現不同功能的線程,把線程的功能實現留給實際應用的開發者。Library開發者只需要實現線程的系統調度等穩定的操作就可以,這就是“實現穩定,開放變化”。當然對于應用開發者,就要自行去實現“變化的部分”,功能穩定部分的實現邏輯對于應用開發者是一個“黑匣子”。對于JAVA線程使用來說,開發者只需要知道在run方法寫入下載功能就能夠同時達到“并發,共享進程資源”的特點。

例如在一個計算圖形的面積的應用程序中已有矩形和三角形的面積計算功能,現有一個“增加圓形計算面積的功能”的需求。

一種實現方式是“每個圖形都定義一個獨立的類”,第二種是‘定義一個圖形抽象類,讓各個圖形繼承該抽象類。“

---------- 實現方式1------------- class rectangular{....double area(){.....} } class triangle{....double area(){.....} }int main(){if(type == "rectangular"){rectangular r1;...r1.area() ; }else if(type =='triangle'){triangle t1;...t1.area();}return 0 ; }---------- 實現方式2------------- class shape{...double area()=0; } class rectangular:public shape{...double area(){.....} } class triangle:public shape{...double area(){.....} }int main(){rectangular r1;...r1.area() ; return 0 ; }

顯然,前一種方式面對這個需求新增,不僅需要創建一個類實體,而且實現流程還需要根據具體類型來變更main方法中的流程。而在第二中方式中,Library 開發人員負責實現 shape 類的定義和main方法的實現,實際應用開發人員只需要創建一個繼承shape 的類就可以完成這個需求。

模板方法主要關注的就是“變化”和“穩定”。把兩者中劃分出來,將變化的部分抽離開,是這模板方法思想的關鍵。

當然,如果功能骨架中的每一步都是變化的,或者從頭到尾都是穩定的,那就不要用模板方法了。

總結

以上是生活随笔為你收集整理的设计模式理解:模板方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。