面向对象,面向过程编程
很多時候,我們都是用面向對象語言進行面向過程編碼。
? ? 1. 濫用 getter、setter 方法。
? ? ? 濫用getter,setter方法很容易造成違反封裝特性。數據沒有訪問權限控制,任何代碼都可以隨意修改它,代碼就退化成了面向過程編程風格的了。
? ? ?在設計實現類的時候,除非真的需要,否則,盡量不要給屬性定義 setter 方法。除此之外,盡管 getter 方法相對 setter 方法要安全些,但是如果返回的是集合容器(比如例子中的 List 容器),也要防范集合內部數據被修改的危險。
? 2. 濫用全局變量和全局方法
? 在面向對象編程中,常見的全局變量有單例類對象、靜態成員變量、常量等,常見的全局方法有靜態方法。單例類對象在全局代碼中只有一份,所以,它相當于一個全局變量。靜態方法一般用來操作靜態變量或者外部數據。靜態方法將方法與數據分離,破壞了封裝特性,是典型的面向過程風格。
? ? ? ? 實際上,只包含靜態方法不包含任何屬性的 Utils 類,是徹徹底底的面向過程的編程風格。但這并不是說,我們就要杜絕使用 Utils 類了。
3.定義數據和方法分離的類
? 也就是數據定義在一個類中,方法定義在另一個類中。
?
??
?
? ? 在生活中,你去完成一個任務,你一般都會思考,應該先做什么、后做什么,如何一步一步地順序執行一系列操作,最后完成整個任務。面向過程編程風格恰恰符合人的這種流程化思維方式。而面向對象編程風格正好相反。它是一種自底向上的思考方式。它不是先去按照執行流程來分解任務,而是將任務翻譯成一個一個的小的模塊(也就是類),設計類之間的交互,最后按照流程將類組裝起來,完成整個任務。我們在上一節課講到了,這樣的思考路徑比較適合復雜程序的開發,但并不是特別符合人類的思考習慣。
??面向對象編程離不開基礎的面向過程編程。為什么這么說?我們仔細想想,類中每個方法的實現邏輯,不就是面向過程風格的代碼嗎?
?
? ?
總結
以上是生活随笔為你收集整理的面向对象,面向过程编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 封装,抽象,继承,多态
- 下一篇: 抽象类,接口