本篇博客是對我上一篇"小計面向對象" 的簡化,和大神聊了聊關於面向對象的東西,下面是討論的結果分享出來給大家。
面向對象是一種思維方式。
和任何語言無關,無論是java,js,.net 都是對這種思維方式的編程語言實現。
面向對象中的特性封裝,繼承,多態只是人們在使用面向對象思維方式解決問題時一種經驗總結。
封裝:
在分析對象的時候我們將對象的屬性和行為放到在一起這本身就是一種封裝。
還有我們限定對象只對外提供服務隱藏具體的實現,這也是封裝。
繼承:
當我們在分析業務抽取對象時,發現兩種對象有着極強的關系(相同的屬性和行為)這個時候我們就可以
使用繼承來解決重復出現的屬性和行為。
多態:
簡單的說就是:一個概念上的不同實現。
當我們根據需求和原型找出對象之后發現存在
相同行為有着不同種類的實現,我們可以試着對行為進行抽象。
比如:會員卡分為金卡,體驗卡,教師卡,學生卡這些卡都必須經過激活才能使用,而且每種卡享受的服務是不一樣的。
使用抽象的思維思考:抽取一個會員卡對象,會員卡有一個激活的行為。
這個時候我們只需要關注會員卡這個對象和激活這個行為就ok啦,無論有多少種類的卡各自自己管理自己的實現。
以前錯誤的認為沒有面向對象必須得體現這些特性,否則就不叫面向對象,哎....太年輕啊。
其實這些特性都是為我們解決問題提供思路的,可以減少我們思考的長度和復雜度。
建議:
使用面向對象思考的過程中:不關注細節,不關注存儲,不關注語言。
面向對象在對象產品需求建模的應用:
在需求分析的時候使用面向對象的思維方式解決問題是有思維層次的:
1.根據需求分析出流程
2.根據流程分析出對象。
3.使用對象模擬流程找出對象之間的關系。
3.在原型和需求中找出對象的屬性。
4.根據這個對象在生命周期內和其他對象之間的消息傳遞找出對象的行為。
在這些層次中不要跨層思考,不要考慮存儲,不要關注語言,不要關注細節。