敏捷軟體開發-面向對象設計的原則

来源:http://www.cnblogs.com/zhuhuablog/archive/2016/02/19/5200718.html
-Advertisement-
Play Games

SRP單一職責原則 就一個類而言,應該僅有一個引起它變化的原因。 OCP開放封閉原則 軟體實體(類、模塊、函數等)應該是可以擴展的,但是不可修改。 LSP Liskov替換原則 子類型必須能夠替換掉它們的基類型 DIP 依賴倒置原則 抽象不應該依賴於細節。細節應該依賴於抽象。 ISP 介面隔離原則


SRP單一職責原則

  就一個類而言,應該僅有一個引起它變化的原因。

OCP開放封閉原則

  軟體實體(類、模塊、函數等)應該是可以擴展的,但是不可修改。

LSP Liskov替換原則

  子類型必須能夠替換掉它們的基類型

DIP 依賴倒置原則

  抽象不應該依賴於細節。細節應該依賴於抽象。

ISP 介面隔離原則

  不應該強迫客戶依賴於它們不用的方法。介面屬於客戶,不屬於它所在的類層次結構。

REP 重用發佈等價原則

  重用的粒度就是發佈的粒度。

CCP 共同封閉原則

  包中的所有類對於同一類性質的變化應該是共同封閉的。一個變化若對一個包產生影響,則將對該包中的所有類產生影響,而對於其他的包不造成任何影響。

CRP 共同重用原則

  一個包中的所有類應該是共同重用的。如果重用了包中的一個類,那麼就要重用包中的所有類。

ADP 無環依賴原則

  在包的依賴關係圖中不允許存在環。

SDP 穩定依賴原則

  朝著穩定的方向進行依賴。

SAP 穩定抽象原則

  包的抽象程度應該和其穩定程度一致。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • https://msdn.microsoft.com/zh-cn/library/system.text.regularexpressions.regex(v=vs.110).aspx /// <summary> /// /// </summary> /// <param name="sender"
  • 引言--面向介面所處的設計模式中的位置。 其實,我認為Java/C#比C++高級的其中一個原因是,它對面向介面編程的支持。不要誤解,並不是說C++不支持面向介面編程,而是說C++的語法中沒有這種天然的機制。 面向對象之於面向過程,面向介面之於面向實現。但基本上,面向介面和麵向實現都基於面向對象的模式
  • Atitit.pdf 預覽 轉換html attilax總結 1. Swf flash還是html1 2. pdf2htmlEX1 3. iText 5.5.0 發佈,Java 的 PDF 操作類庫1 4. PdfBox1 5. other2 5.1. ICEpdf2 5.2. xpdf用過2 5.
  • 定義 適配器模式(Adapter):將一個類的介面轉換成客戶希望的另外一個介面 那通俗點來說,啥是適配器呢,大家都知道港版的iphone的充電器,是不能直接在內地使用的,需要一個轉換器才能使用,那麼這個 轉換器就是所謂的適配器 . 那麼適配器能夠給我們帶來什麼好處呢? 使用港版iPhone的同學都知
  • 裝飾模式(Decorator) 裝飾模式又名包裝(Wrapper)模式。 裝飾模式以對客戶端透明的方式擴展對象的功能,是繼承關係的一個替代方案。 裝飾模式通過創建一個包裝對象,也就是裝飾,來包裹真實的對象。 裝飾模式以對客戶端透明的方式動態地給一個對象附加上更多的責任。換言之,客戶端並不會覺得對象在
  • 1、簡介 Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel ,從而方便我們以優雅的、富有表現力的代碼實現Excel/CSV文件的導入和 導出 。 該項目的GitHub地址是: https://github.com/Maatwebsite/La
  • 什麼是設計模式 現在聊起來java設計,那就必然要聊聊設計模式,幾年前我剛入行的時候,總是聽人說起設計模式,在當時的我看來,那是多麼高大上的東西啊,以至於有種遙不可及的感覺,如今自己做java也好幾個年頭了,今天來談談如今我眼中的設計模式 說白了,設計模式就是前輩高人總結出來的一套編寫好代碼的方法,
  • 博主第一次開發商城類的項目,目前商城已上線,這裡就不打廣告了。商城的架構主要為yii2+backbone,還有一些其他blablablabla......的插件。 商城有PC端和微信端,先上線的PC端後上線微信端。 第一版的開發模式是,前端同學設計好界面原型,切好圖,做完靜態頁面交給後端人員。後端人
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...