設計模式什麼的哪有那麼神祕 ----第一集 一些吐槽和重構的韻味


一日面試, java


...... 程序員

Hr:你對設計模式熟悉嗎? 面試

應聘者A:我瞭解經常使用的設計模式,平時常用工廠模式和單例模式.並且我也看過一些講23種設計模式的書.其餘不經常使用的模式用的不是太熟. 設計模式

Hr:你用過外觀模式嗎? 框架

應聘者A:沒有.可是我瞭解過,在書中看到過. 學習

...... spa


以上就是筆者最近一次招聘程序員的時候一段對話.只要是來應聘開發崗位的應聘者.基本我都會問以上的問題.一提設計模式,不少程序員都知道這是很重要的東西.要學,並且面試確定問.可是絕大多數的求職者在回答這個問題的時候,不約而同提到單例模式,工廠模式.而對於其餘模式只知其名.並且彷佛不少公司在面試的時候只問這兩種模式.由於這兩種模式是SSH框架中基本原理的一部分.目前javaEE開發的大環境仍然是SSH.因此學校裏的老師也只教給學生這兩種模式. 設計

筆者並無以爲SSH多麼很差.並且筆者也在用.筆者只想討論另外一個問題.也是困擾不少程序員的問題.如何學通設計模式.如何讓設計模式再也不是高高在上理論上的存在.而真正能夠融合到咱們平常的開發工做中來. 代理

上面的問答,爲何筆者要問面試者外觀模式.由於在筆者看來,外觀模式是最不像設計模式的設計模式,常常給面試者說,只要你認真寫過幾天代碼,就必定會用到的模式.固然GOF提出的23種設計模式中,不只僅只有外觀模式簡單.比方說代理模式,只要認真學過繼承就必定用過.比方說簡單工廠,只要寫過switch語句就必定用過. 繼承

那麼,今天就從外觀模式開始提及吧.

爲何說外觀模式簡單,由於外觀模式實際上就是把原來亂七八糟的調用整理到一塊兒的過程.筆者把這個模式理解爲代碼重構.

舉個栗子:

Class 炮兵{

Fun:開炮();//表示這是一個方法 Fun 是 function 的縮寫

}

Class 槍兵{

Fun:開槍();

}

代碼完成後能夠很好的完成炮兵開火和槍兵開火的功能.可是後期需求提出要增長一鍵所有開火的功能.長官喊:士兵,開火!!.不管是什麼士兵所有開火.

這個時候就須要增長一個新類,名字叫士兵.經過士兵的開火功能,把炮兵,槍兵的開火功能集中在一塊兒(封裝).

Class 士兵{

Fun:開火(){

炮兵.開炮

槍兵.開槍

}

}

不知道各位,是否體會到了其中的韻味.外觀模式,有一種對代碼進行二次封裝的味道.或者說是一種自下而上式的重構技巧.是一種抽象的思惟方式.這種思惟方式在各類設計模式中基本都有體現.比方說代理模式.所以我認爲,學習設計模式應該先弄懂外觀模式這種思惟方式.而後看其餘模式就會輕鬆一點.

相關文章
相關標籤/搜索