中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

設計模式開篇和工廠方法模式

發布時間:2020-07-04 10:16:15 來源:網絡 閱讀:421 作者:JackSongBlack 欄目:軟件技術

設計模式開篇和工廠方法模式


開篇之言


最近準備將23種設計模式用ruby和javascript兩種語言分別實現,為什么要這么做

一.公司由于代碼風格不統一造成的溝通問題而開展的全公司學設計模式。二.作為學習后筆記用。三.選擇ruby和javascript是因為我現在主要使用這兩門語言。四.作為體會各種模式的適用點。


設計模式用途


為什么要學設計模式?這里談談自己對設計模式看法

一.設計模式本質就是屏蔽變化點。(很精辟的悟點,看設計模式最佳角度,感謝易博士)二.沒有一種設計模式是萬能的,所以談論哪種設計模式最好是無用的,沒有最好,只有剛剛好。(基于第一條)三.設計模式不是為了耍酷,而是為了方便和其他OOA程序員溝通而制定一個標準名詞和標準動作。

廢話完成,進入正文

工廠方法(factory method)


首先來看看我們UML
設計模式開篇和工廠方法模式

概述

在軟件系統中,經常面臨著“某個對象”的創建工作,由于需求的變化,這個對象的具體實現經常面臨著劇烈的變化, 但是它卻擁有比較穩定的接口。如何應對這種變化?提供一種封裝機制來隔離出“這個易變對象”的變化, 從而保持系統中“其它依賴該對象的對象”不隨著需求的改變而改變?這就是要說的Factory Method模式了。

意圖


定義一個用戶創建對象的接口,讓子類決定實例化哪一個類。Factory Method使一個類的實例化延遲到其子類。

屏蔽的變化點


1.工廠類不再負責實例的具體過程,將變化的具體構造過程,交給子類來實現。 2.將到底實例哪個類,交給調用者來決定

ruby的實現
class Car   def self.factory typeName      const_get(typeName).new #查詢祖先鏈,如果查到返回這個靜態值   endendclass BMW < Car  def drive      p "my it's BMW"  endendclass Benz < Car   def drive     p "my it's Benz"   endend
javascript實現
var car = car || {}car.BMW = function(){  console.log("my it's BMW")}car.Benz = function(){  console.log("my it's Benz")}car.factory= function(name){  var o = {}  o.method = car[name]  return o}
體會

工廠方法適合一下情景

1.具體方法沒有定義或不無法定義,需要子類來實現。2.設計時不知道到底需要實例哪個子類。3.處理大量類似實例

缺點

1.依賴繼承鏈,太過復雜不好測試


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁强县| 奉化市| 墨江| 武威市| 如皋市| 大姚县| 丹寨县| 股票| 和田县| 清镇市| 莱芜市| 揭阳市| 高安市| 达拉特旗| 高台县| 江山市| 龙岩市| 平定县| 边坝县| 蚌埠市| 永川市| 开平市| 若尔盖县| 始兴县| 融水| 阳信县| 平罗县| 上杭县| 政和县| 津市市| 新民市| 卓资县| 华安县| 中牟县| 绥德县| 淮北市| 明光市| 常熟市| 隆回县| 微山县| 乌鲁木齐县|