程式設計正規化
面向過程和物件導向
eg. 從users.txt 中讀取使用者資訊,格式化成name\tage\tgender,並且按照age大小排序後寫入另外乙個檔案
面向過程和物件導向的區別
**組織方式不同,面向過程風格的**被組織成一組方法集合和資料結構,資料和方法的定義是分開的,物件導向風格的**則是將資料和運算元據的方式共同定義在了類裡
上訴例子因為需求簡單,物件導向的優勢不怎麼明顯,反而面向過程更有優勢,這是因為整個程式的處理流程只有簡單的一條主線,很容易被劃分為幾個步驟,逐句翻譯成**,這非常適用面向過程程式設計風格來實現。但是當開發大規模複雜程式時候,整個程式的處理流程錯綜複雜,分支多的時候物件導向就更適用了,即我們思考的方式並不是如何用**將這個流程表示出來,而是對整個業務建模,將整個程式抽象成不同的模組,然後對各個模組進行適配完成最終的業務。這種思考問題的方式可以讓我們在開發的時候思路更清晰,不至於著迷與某個細節
物件導向基於四大特性,可以更輕鬆的寫出易復用,易擴充套件,易維護的**
物件導向更接近於我們人類的思維,更容易被人接受,這也是機器語言到組合語言再到高階語言的乙個發展過程
三種違反物件導向程式設計風格的**設計
物件導向和面向過程不是非黑即白的關係,目的是為了寫出更高質量的**(忠臣、奸臣皆有所用,利益最大化)
濫用 getter,setter 方法,在設計實現類的時候除非真的需要,否則盡量不要給屬性定義setter方法,如果返回的是集合容器,也要防範集合內部資料被修改的風險
constants類 、utils類的設計問題。這兩種類盡量做到職責單一,定義一些細化的模擬如,mysqlconstants、fileutils類,如果能把這些類的屬性和方法劃分到其他業務類中是最好不過的
基於貧血模型的開發模式,傳統的mvc 結構在做前後端分離時會被分為controller層、service層、repository層,controller層負責暴露介面給前端呼叫,service 層負責業務處理,repository層負責資料讀寫,在每一層中又會定義vo、bo、entity,一般情況下vo、bo、entity中只定義資料,而方法是定義在對應的controller類,service類,repository 類中,這是典型的面向過程程式設計風格
附上大牛課程,需要可以直接去學習
物件導向設計模式學習(一) 物件導向設計模式與原則
1。軟體設計模式是一些常見問題的一般解決案。2。物件導向設計模式是在物件導向開發中描述物件之間資訊通訊的組織關係。3。面象物件的三個特點 封裝 內部實現的隱藏 繼承 實現 復用 多型 改寫物件的行為 4。實現封裝,繼承,多型並不代表就是乙個面象物件模式設計,是面象物件模式的設計才導致了封裝,繼承,多...
設計模式學習筆記 物件導向設計原則
1 單一職責 乙個類只應該做一樣事情 2 開閉原則 對擴充套件開放,對修改封閉 3 黎克特制代換 以父類的名義統一進行呼叫,使用時賦以具體子類,實現多型。4 依賴倒轉 是黎克特制代換原則另一種表述。針對介面 抽象程式設計,其實也就是以父類的名義統一進行呼叫,使用時賦以具體子類,實現多型。5 介面隔離...
設計模式學習筆記 物件導向設計原則
單一職責原則定義 單一職責原則 srp single responsibility principle 又稱單一功能原則,物件導向五個基本原則 solid 之一。它規定乙個類應該只有乙個發生變化的原因。該原則由羅伯特 c 馬丁 robert c.martin 於 敏捷軟體開發 原則 模式和實踐 一書...