我去,這篇講「設計模式七大原則中單一職責原則」的文章有點東西

2020-12-16 編程小菜鳥

上一個輪的加班剛剛完結還沒一周,領導就跑來告訴我:「小菜鳥,周末跟加班才更般配喲!」可憐的孩子又迎來了新的加急任務,美好的加班生活又要開始嘍。

不!這不是菜鳥想要的生活,菜鳥要反抗,菜鳥決定了,要辭職。這不偷偷拿出手機登錄各大招聘網站進行了瀏覽,突然發現怎麼招聘還要求會設計模式那?為此趕緊拿出那早已沾滿灰塵的資料進行惡補。哎!在這之前還是扶我起來加班吧。

以上內容純屬虛構(除了加班),如有雷同請看下文。

今天讓我們一起學習一下設計模式七大原則之——單一職責原則。

基本概念

拿java的類來說單一職責原則,就是一個類只負責一項職責,也可以稱之為一項功能。

單一職責帶來的好處

1、一個類只負責一項職責,最直接的好處就是降低類的複雜度。2、職責的單一會提高類的可讀性,提高程序的可維護性,降低後期維護成本。3、因其只負責一項功能,所以當代碼變動時不會影響到到其他功能,從而大大降低變更引起的風險。

理論知識就講到這裡,下面讓我們看一段示例代碼,從而加深一下對單一職責原則的理解。

代碼時間

違反了單一職責原則的示例代碼:

註:吃肉和吃草是兩種行為,該類卻寫在一起了,典型的違反了單一職責原則。並且這樣設計在之後需要添加吃其它食物的功能時需要再增加一個else if,當功能增多並且邏輯複雜時,會造成代碼非常臃腫,難以理解和維護。

類級別遵守單一職責原則的示例代碼:

在方法級別遵守單一職責原則的示例代碼:

個人意見

1、單一職責雖好,但也不可以生搬硬套,不然會引起類的增多,添加額外的維護成本。2、當代碼的邏輯足夠簡單時,我們可以在代碼級別違反單一職責原則;3、當類中的方法數量少,並且業務邏輯不是特別複雜時,可以在類級別上違背單一職責原則,下沉至方法級別保持即可。4、我們要根據需求和實際情況來靈活運用單一職責原則。

總體來說就是需要靈活運用單一職責原則,結合實際情況考慮是在類級別遵守還是在方法級別遵守。

今天的分享就到這裡了,感覺文章不錯的記得點讚加關注呦!

相關焦點

  • 設計模式:單一職責原則
    其實上單一職責原則和接口隔離原則有一定的關係,接口隔離以後,職責就單一了,實現這個接口的類的職責自然也就單一了。但是接口隔離關注的是抽象層,單一職責關注的是兩者兼而有之,偏重於實現。2、為什麼要遵守單一職責原則1、提高類的可維護性和可讀寫性一個類的職責少了,複雜度降低了,代碼就少了,可讀性也就好了,可維護性自然就高了。
  • 爬梯:七大設計原則
    設計原則設計模式原則,其實就是程式設計師在編程時,應當遵守的原則,也是各種設計模式的基礎(即:設計模式設計的依據)1、單一職責原則基本介紹對類來說,即一個類應該只負責一項職責。通常情況下,我們應擔遵守單一職責原則;什麼情況可以不遵守單一職責原則:1)業務邏輯足夠簡單,代碼量足夠少;2)類中的方法數量足夠少,可以在方法級遵守單一職責原則。
  • 作為程式設計師不可不會的設計模式七大原則之——「開閉原則」
    我們總不能閒等這對吧?還是趕緊跟「菜鳥」一起學學新的的知識吧!今天給大家分享一下設計模式七大原則中的「開閉原則」,也稱為OCP原則。好了閒話不多說,直接進入正文。「開閉原則」是面向對象編程中最基礎和最重要的設計原則之一。
  • SOLID設計原則解釋 - 單一責任原則
    SOLID是面向對象軟體開發中最流行的設計原則之一。>單一責任原則的好處在我們深入探討這個設計原則之前,讓我們先解決最重要的問題:為什麼要使用它?驗證您的設計的簡單問題不幸的是,遵循單一責任原則聽起來比通常容易得多。如果您在較長時間內構建軟體,並且需要根據不斷變化的需求進行調整,那麼最簡單,最快速的方法似乎是在現有代碼中添加方法或功能,而不是編寫新的類或組件。
  • 設計的五大原則-SOLID
    1.背景最近在讀《架構整潔之道》這一本書,這本書的確寫得不錯,最近也沒有更新文章,一方面再忙工作,另一方面也再啃一些書。當然文章還是得更新,《架構整潔之道》裡面有些有意思的內容我會提取出來外加自己的思考。在這本書裡面的第三章介紹了設計原則,這部分我覺得對於大家的平時工作都比較有用。2.
  • 設計模式設計原則——備忘錄
    1、開閉原則(Open close principle)解釋:對擴展開放,對修改關閉。在程序需要進行拓展的時候,不能去修改原有的代碼,目標是實現一個熱插拔的效果。2、裡氏代換原則(Liskov Substitution Principle)裡氏代換原則是面向對象設計的基本原則之一。裡氏代換原則:任何父類可以出現的地方,子類一定可以出現。
  • 七大設計原則:接口隔離原則,你是怎麼應用的呢?
    ——陸遊※引導語在設計開發過程中往往會出現這麼一現象:在開始設計、開發的時候,一個接口的用來做什麼什麼的設計的很明確,前期開發過程中接口看著也比較惹人喜愛;隨著,開發周期的拉長,尤其是經過幾人手後,你會發現,它再也不是那個接口了,而是變得臃腫,都不想看了。
  • PHPer必學的進階教程:PHP面向對象設計的五個基準原則
    那麼作為基礎中的基礎,PHP面向對象你又掌握了多少呢?今天這篇文章,就來給大家講一講關於面向對象的一些事,希望能對大家有所幫助。什麼是面向對象?面向對象就是把生活中要解決的問題都用對象的方式進行存儲–把所有的數據用屬性、方法表現出來。
  • 設計模式六大原則(4):接口隔離原則
    ,不管對依賴於它的類有沒有用處,實現類中都必須去實現這些方法,這顯然不是好的設計。:建立單一接口,不要建立龐大臃腫的接口,儘量細化接口,接口中的方法儘量少。也就是說,我們要為各個類建立專用的接口,而不要試圖去建立一個很龐大的接口供所有依賴它的類去調用。本文例子中,將一個龐大的接口變更為3個專用的接口所採用的就是接口隔離原則。在程序設計中,依賴幾個專用的接口要比依賴一個綜合的接口更靈活。接口是設計時對外部設定的「契約」,通過分散定義多個接口,可以預防外來變更的擴散,提高系統的靈活性和可維護性。
  • 軟體設計模式六大原則,你懂多少呢?
    軟體設計模式軟體設計模式,簡稱設計模式,它是一種反反覆覆被使用,多數人經過分類編目的,代碼設計經驗的總結。使用設計模式可以為了減少重複的代碼,讓代碼變得更加簡潔,讓人更加容易理解,保證代碼的可靠性,程序可重複性。設計模式的六大原則,你懂多少呢?1.六大原則-單一職責原則原則思想:一個方法只負責一件事情。
  • 萬字長文帶你捋清六種設計模式的設計原則(建議收藏)
    可是,在日常的打碼中,用的最多的就是單例,其次是觀察者和建造者模式 ( builder ) 用得比較多,其它的基本很少用到。用不到的原因是還是不能夠理解設計模式的思想,無法將這些設計模式和編碼遇到的問題聯繫起來,從而用不到設計模式。
  • 程序設計開發的六大原則 核心思想
    【IT168 評論】   一、單一職責原則  Single Responsibility Principle,應該有且僅有一個原因引起類的變更,實際中比較不好把握,因為職責的劃分沒有一個統一的標準。
  • Java程式設計師應該了解的10個面向對象設計原則
    我個人偏向的另一種面向對象的設計模式是Kathy Sierra的Head First Design Pattern以及Head First Object Oriented Analysis and Design。雖然實際案例是學習設計原則或模式的最佳途徑,但通過本文的介紹,沒有接觸過這些原則或還在學習階段的Java程式設計師也能夠了解這10個面向對象的設計原則。
  • 面向對象的六原則一法則,而現實中只需要一個原則:老婆,我錯了
    1、 單一職責原則:一個類只做它該做的事情單一職責原則想表達的就是」高內聚」,寫代碼最終極的原則只有六個字」高內聚、低耦合」,就如同葵花寶典或闢邪劍譜的中心思想就八個字」欲練此功必先自宮」。所謂的高內聚就是一個代碼模塊只完成一項功能,在面向對象中,如果只讓一個類完成它該做的事,而不涉及與它無關的領域就是踐行了高內聚的原則,這個類就只有單一職責。我們都知道一句話叫」因為專注,所以專業」,一個對象如果承擔太多的職責,那麼註定它什麼都做不好。
  • 問卷設計的五大要素七大原則
    需緊緊圍繞研究主題與研究目的評價問卷優劣的準則中有很重要的一點就是問卷內容與研究主題和目的的契合度。一份設計很精妙的問卷如果與研究主題無關,那麼其價值也是很低的。通常,一個研究主題會由幾個不同的維度來解釋,在問卷擬題初期,每個維度最好設計10個問題左右,經過反覆挑選後,在正式問卷中每個維度至少要有3個問題。2.
  • 讓設計模式飛一會兒|①開篇獲獎感言
    關於設計模式的文章,書籍,多如牛毛,隨便百度、Google一下都能給你搜出不計其數關於講解設計模式的文章來。那為什麼我還要花費如此大的精力和時間,來寫這麼個耳熟能詳的東西呢?寫作原因首先,肯定不是因為我對設計模式有多精通。
  • 設計模式 接口隔離原則
    設計模式 接口隔離原則用類圖說明abstract void show();}然後對星探進行實現public class Searcher extends AbstractSearcher{ public Searcher(PettyGirl _pettyGirl){ super(_pettyGirl); // 調用抽象類中的構造方法進行初始化
  • 設計原則之開閉原則
    開閉原則實際也是「對可變性的封裝原則」,那就是「考慮你的設計中什麼可能發生變化,找到一個系統的可變因素,將它封裝起來」。把變化封閉起來也就是我們經常用到的繼承,編寫一個抽象類用子類來繼承他,或者編寫一個接口讓子類去實現他。繼承固然很好,既封裝了變化又實現了復用,但卻不能濫用,也就是說應當把繼承僅僅當做封裝變化的方法,而不應當被認為是從一般的對象生成特殊的對象。
  • 再談面向對象的設計原則
    如果開發者的設計能力不足,整個軟體系統面臨的風險就非常的大。那麼在設計過程中,我們如何才能更深入的理解面向對象呢?我們先來了解一下面向對象的六大基本原則,它們是面向對象設計的嚮導。這六個原則是:單一職責原則,開放封閉原則,替換原則,依賴原則,接口分離原則,合成聚合復用原則。
  • .NET 設計模式的六大原則理論知識
    單一職責原則(SRP)(Single Responsibility Principle)2. 裡氏替換原則(LSP)(Liskov Substitution Principle)3.開閉原則(OCP)(Open Closed Principle)1:單一職責原則(一個類只做一件事)應用場景:類T負責兩個不同的職責:P1職責,P2職責。