上一個輪的加班剛剛完結還沒一周,領導就跑來告訴我:「小菜鳥,周末跟加班才更般配喲!」可憐的孩子又迎來了新的加急任務,美好的加班生活又要開始嘍。
不!這不是菜鳥想要的生活,菜鳥要反抗,菜鳥決定了,要辭職。這不偷偷拿出手機登錄各大招聘網站進行了瀏覽,突然發現怎麼招聘還要求會設計模式那?為此趕緊拿出那早已沾滿灰塵的資料進行惡補。哎!在這之前還是扶我起來加班吧。
以上內容純屬虛構(除了加班),如有雷同請看下文。
今天讓我們一起學習一下設計模式七大原則之——單一職責原則。
基本概念
拿java的類來說單一職責原則,就是一個類只負責一項職責,也可以稱之為一項功能。
單一職責帶來的好處
1、一個類只負責一項職責,最直接的好處就是降低類的複雜度。2、職責的單一會提高類的可讀性,提高程序的可維護性,降低後期維護成本。3、因其只負責一項功能,所以當代碼變動時不會影響到到其他功能,從而大大降低變更引起的風險。
理論知識就講到這裡,下面讓我們看一段示例代碼,從而加深一下對單一職責原則的理解。
代碼時間
違反了單一職責原則的示例代碼:
註:吃肉和吃草是兩種行為,該類卻寫在一起了,典型的違反了單一職責原則。並且這樣設計在之後需要添加吃其它食物的功能時需要再增加一個else if,當功能增多並且邏輯複雜時,會造成代碼非常臃腫,難以理解和維護。
類級別遵守單一職責原則的示例代碼:
在方法級別遵守單一職責原則的示例代碼:
個人意見
1、單一職責雖好,但也不可以生搬硬套,不然會引起類的增多,添加額外的維護成本。2、當代碼的邏輯足夠簡單時,我們可以在代碼級別違反單一職責原則;3、當類中的方法數量少,並且業務邏輯不是特別複雜時,可以在類級別上違背單一職責原則,下沉至方法級別保持即可。4、我們要根據需求和實際情況來靈活運用單一職責原則。
總體來說就是需要靈活運用單一職責原則,結合實際情況考慮是在類級別遵守還是在方法級別遵守。
今天的分享就到這裡了,感覺文章不錯的記得點讚加關注呦!