一句話設計原則

面向對象的可復用設計( Object Oriented Design / OOD)

1. 開閉原則 (Open Closed Principle)

對擴展開放,對修改關閉

2. 里氏代換原則(LSP)

1.可以使用基類的地方,其子類必然也能使用
2.并且原功能不會受到任何影響

-- 經典案例, 正方形是不是長方形的子類?

3.依賴倒轉原則(DIP)

依賴抽象,不要依賴具體,面向接口編程

傳統過程性設計辦法傾向于高層依賴低層,抽象依賴具體
image.png
依賴倒轉原則,就是把錯誤的依賴關系倒轉過來
image.png

4.接口隔離原則(ISP)

使用多個專門的接口,比使用單一的接口要好

5.合成、聚合復用原則(CARP)

盡量使用合成,聚合,盡量不使用繼承

6.迪米特法則

不跟陌生人說話……

  1. 這是“某人” 的朋友圈, 他與“朋友” 之間是朋友關系
    image.png
  2. 這是“朋友” 與 “陌生人” 組成的朋友圈
    image.png

  3. 迪米特法則建議,“某人” 與 “陌生人” 之間不要進行直接通話,而是通過“朋友”去調用“陌生人”的方法,對于“某人”來說,“陌生人”是不存在的。
    image.png

怎么樣才算“朋友”? 也只有患難見真情。

  1. 當前對象本身
  2. 以參量形式傳入到當前對象方法中的對象
  3. 當前對象的實例變量引用的對象
  4. 當前對象實例是集合,則集合中的對象是朋友
  5. 當前對象創建的對象

應該是有依賴關系的,就算是“朋友”吧

轉載于:https://www.cnblogs.com/DonneZhang/p/10266780.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280646.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280646.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280646.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

postman--安裝及Interceptor插件

1. 官網安裝(看網速-我下載的時候一直下載失敗)打開官網,https://www.getpostman.com選擇ios或者win 2. 非官網安裝 https://pan.baidu.com/s/1mstsimqO3ZC5m9z8czxVnA 密碼:q6yp 安裝postman 3.需要安裝分享的藍燈安裝包&#xf…

亞馬遜標題自動抓取_如何為您的家人提供自動Amazon禮品卡津貼

亞馬遜標題自動抓取When your kids move away to go to school, they’ll probably phone home every once in a while to ask for money. If they shop a lot on Amazon (and they probably do), you can expedite that process by setting up an automatically recurring dep…

Django04-2: ORM關系表\字段補充

一、表與表關系 一對多 多對多 一對一 圖書表 出版社 作者表 作者詳情表 出版社 和 圖書表 關系 一對多 外鍵字段在多的一方 book 圖書表 和 作者表 關系 多對多 需要創建第三張表 作者表 和 作者詳情表 關系 一對一 #創建表關系 先將基表創建 再添加外鍵字段 一對多…

我 與 TDesignBlazor 的故事

前言作者打拼了 .NET 十多年,屬于全棧應用類型的工程師,特別是對于前端的技術情有獨鐘,從純js到jquery,從bootstrap到自己寫css,從web到winform,還寫過一段時間的knockout.js,以至于公司里的前端…

實驗數據

1.整段deng音頻200多秒 2.加xx(1000:1480)之后 轉載于:https://www.cnblogs.com/20179302yzl/p/10270632.html

25個好用的Shell腳本常用命令分享

1.列出所有目錄使用量,并按大小排序。復制代碼 代碼如下:ls|xargs du -h|sort -rn #不遞歸下級目錄使用du -sh2.查看文件排除以#開關和空白行,適合查看配置文件。復制代碼 代碼如下:egrep -v "^#|^$" filenamesed /#.*$/d; /^ *$/d3.刪除空格…

mysql中查詢一個字段屬于哪一個數據庫中的哪一個表的方式

mysql中查詢一個字段具體是屬于哪一個數據庫的那一張表:用這條語句就能查詢出來,其中 table_schema 是所在庫, table_name 是所在表 --mysql中查詢某一個字段名屬于哪一個庫中的哪一張表 select table_schema,table_name from information_schema.columns where col…

macos剪切_如何使用macOS的內置“ Kill and Yank”作為替代剪切和粘貼

macos剪切Everyone knows about cutting and pasting by now. But did you know that your Mac sort of has a second clipboard known as kill and yank? 現在,每個人都知道剪切和粘貼。 但是您是否知道Mac上還有第二個剪貼板,稱為“ kill and yank”&…

ExtJS 折線圖趟過的坑

問題: 1、根據條件檢索后繪制折線圖,之前的坐標沒有清除如圖 解決方案: 在繪制之前,清空坐票: leftLine.surface.removeAll(); leftLine.redraw(false); 完整代碼如下 storeBar.load({params: { SDate: bTime, EDate: …

EventBus的實現

EventBus概要 EventBus是消息傳遞的一種方式,基于一個消息中心,訂閱和發布消息的模式。這種方式的實現不僅僅局限于前端,在iOS中的消息消息中心也是如此實現。 設計模式:訂閱者發布者模式,這種設計模式在前端很常見。A…

Django05-1: 有名分組、無名分組與反向解析

有名、無名分組 分組正則表達式,加小括號 url(r^test/(\d), views.test),def test(request,xx):print(xx)return HttpResponse("OK") 無名分組 將括號正則表達式匹配的內容,當作位置參數傳遞到后面的視圖函數 有名分組 正則表達式起一個別…

Django的第一步(第一節)

寫下你的第一個Django應用第一部分讓我們通過例子來學習.在本教程中,我們將引導您完成基本投票應用程序的創建.其中包括兩部分:一個讓人們查看民意調查并投票的公共網站.允許您添加,更改和刪除民意調查的管理網站.我們假設你django已經安裝好了,你可以通…

ad中電源插座怎么封裝_您可以在房屋中安裝的各種電源插座

ad中電源插座怎么封裝You may already know about smart outlets, or outlets with integrated USB ports. But you might be surprised at how many “normal” outlets you can actually buy for your house. They’re all built for different situations, and you want to …

Arithmetic Slices

這兩天一直復習動態規劃,就想到leetcode上刷刷題,easy難度的很少,大部分都是medium和hard。本題是第一道DP類型medium難度的題目,但是用其他的方法比如暴力法也可以求解。首先來看題目描述: A sequence of number is c…

在Data Lake Analytics中使用視圖

在Data Lake Analytics中使用視圖 1. 概述 在Data Lake Analytics(以下簡稱DLA)中使用視圖(VIEW)功能,可以大大簡化對于重復SQL,特別是較為復雜的SQL語句的編寫和維護。目前DLA中還不支持SQL視圖的物化。在…

C# 實例詳解委托之Func、Action、delegate(精品)

概述委托是.NET編程的精髓之一,在日常編程中經常用到,在C#中實現委托主要有Func、Action、delegate三種方式,本節主要就這三種委托的用法通過實例展開講解。Func用法解析【Func】:Func是帶返回值的委托:原型函數如下(以…

Django05-2:路由分發/命名空間/偽靜態/虛擬環境/django版本區別

路由分發 補充:每一個應用可以有獨立的templates模板文件夾,static靜態文件加,urls.py 總路由 #方法一from app01 import urls as app01_urls from app02 import urls as app02_urlsurlpatterns [url(r^publisher_list/, views.publisher_…

Word中查找替換軟回車鍵和回車鍵

在Word中使用搜索功能搜索“^p”組合字符串可以查找文檔中的所有換行符(回車鍵),使用“^l”(英文輸入狀態下shift6與小寫字符L的組合)可以搜索所有的軟回車符。使用替換功能就可以搜索替換二者。轉載于:https://www.cn…

minecraft服務器_如何使用Minecraft領域設置簡單的無壓力Minecraft服務器

minecraft服務器There are a lot of ways to go about hosting a Minecraft game but it’s tough to beat the simplicity of buying a server directly from Mojang, the company behind Minecraft (and now it even comes with a free 30 day trial!) Read on as we show yo…

自動化測試基礎篇--Selenium瀏覽器操作

Selenium 主要提供的是操作頁面上各種元素的方法,但它也提供了操作瀏覽器本身的方法,比如瀏覽器的大小以及瀏覽器后退、前進按鈕等。一、控制瀏覽器窗口大小有時候我們希望能以某種瀏覽器尺寸打開,讓訪問的頁面在這種尺寸下運行。例如可以將瀏…