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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

设计模式原则篇:(1)单一职责原则--Single Responsibility Principle

發布時間:2025/3/20 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式原则篇:(1)单一职责原则--Single Responsibility Principle 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????? ? ? ?? 上篇文章提及到設計模式中應遵循的設計原則,并且列出了設計模式中應當遵循的六大原則。

?????? 次篇文章主要討論單一職責原則。

???????????? 單一職責原則(SRP):

???????????????????????? 不要存在多于一個導致類變更的原因。簡單的講,就是一個類或接口只負責一個"職責"

????????????? 如果一個類有一個以上的職責,這些職責就耦合在一起了,這種設計十分脆弱,因為當一個職

????????????? 則的變換很可能影響其他職責,會影響復用性。

????????????????????????? 這里需要對類或接口的"職責"做一些理解,SRP中將"職責"理解為“變化的原因”,當你有N

????????????? 個動機去改變類的時候,那么這個類就違法了SRP原則.

?????????????????????? Tips:這里只有你去真正修改了類的時候違反了SRP原則,如果僅僅只是一種推測,并未

??????????????? 實際付之行動,不算違反之一原則。

???????????? 單一職責原則(SRP)優點:

??????????????? 1、可以降低類的復雜度

??????????????? 2、提高類的可讀性,系統的可維護性

??????????????? 3、降低變更的時候對其他功能的影響(變更不可避免)

?????????????? 簡單舉一個例子:關于動物吃東西的問題。

????????????????????? 編寫一個類用于描述動物吃東西:

package com.kiritor; /** * @author Kiritor * 動物類的描述*/ class Animal { public void eatFood(String name) { System.out.println(name+"吃草"); } } public class Client { public static void main(String[] args) { Animal animal = new Animal(); animal.eatFood("羊"); animal.eatFood("牛"); } } ?????????????? 不過這里問題就來了,并不是所有動物都吃草的啊,也有肉食動物的。在不違背單一

????? 原則的情況下,我們必須將動物類細分為,肉食性和素食性的。

class AnimalMeat { public void eatFood(String name) { System.out.println(name+"吃肉"); } } class AnimalGlass { public void eatFood(String name) { System.out.println(name+"吃草"); } } public class Client { public static void main(String[] args) { AnimalGlass animal = new AnimalGlass(); animal.eatFood("羊"); AnimalMeat animal2 = new AnimalMeat(); animal2.eatFood("老虎"); } }

? ? ? ? ? ? ? ?? 由上述代碼可以知道,這種修改的開銷還是挺大的,不僅需要添加新類,還要修改客戶

???????? 端代碼。有事還不如這樣修改:

class Animal{ public void eatFoodGlass(String animal){ System.out.println(animal+"吃草"); } public void eatFoodMeat(String animal){ System.out.println(animal+"吃肉"); } } public class Client{ public static void main(String[] args){ Animal animal = new Animal(); animal.eatFoodGlass("牛"); animal.eatFoodGlass("羊"); animal.eatFoodMeat("老虎"); } } ???????????? 造成上述的結果就是在使用單一原則的情況下,對于"職責"的劃分沒有一個明確的標準,如果

????? 把職責劃分過細反而會造成接口和實現類的數量劇曾,反倒不利于維護和閱讀。所以在使用這個

????? 原則的時候還是要具體問題具體分析。

??????????? 建議就是接口一定要采用單一職責原則,實現類的設計上盡可能做到單一職責原則,最好是一個

????? 原因引起一個類的變化。

??????

轉載于:https://blog.51cto.com/kiritor/1226704

總結

以上是生活随笔為你收集整理的设计模式原则篇:(1)单一职责原则--Single Responsibility Principle的全部內容,希望文章能夠幫你解決所遇到的問題。

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