1骤星、單一職責原則(Single Responsibility Principle)
? ? ? ? 定義:單一職責原則(SRP)经瓷,就一個類而言,應該僅有一個引起它變化的原因洞难。
? ? ? ? 單一職責原則是實現高內聚舆吮、低耦合的指導方針;它需要開發(fā)人員發(fā)現類的不同職責并將其分離队贱。難點就在于怎么分離色冀?那就是如果你能夠想到多于一個的動機去改變一個類,那么這個類就具多余一個的職責柱嫌。
2锋恬、開發(fā)-封閉原則(Open-Closed Principle)
? ? ????定義:軟件實體(類、模塊编丘、函數等等)与学,應該可以擴展,但是不可以修改嘉抓。
? ? ? ? 無論模塊是多么的“封閉”癣防,都會存在一些無法對之封閉的變化。既然不可能完全封閉掌眠,設計人員必須對于他設計的模塊應該對哪種變化封閉做出選擇蕾盯。他必須先猜測出最有可能發(fā)生的變化種類,然后構造抽象來隔離那些變化蓝丙。
? ? ? ? 由于我們不會預測未來级遭,所以在我們最初編寫代碼時,假設變化不會發(fā)生渺尘。當變化發(fā)生時挫鸽,我們就創(chuàng)建抽象來隔離以后發(fā)生的同類變化。
3鸥跟、依賴倒轉原則(Dependency Inversion Principle)
? ? ? ? 定義:1丢郊、高層模塊不應該依賴低層模塊。兩個都應該依賴抽象医咨。
? ? ? ? ? ? ? ? ? ?2枫匾、抽象不應該依賴細節(jié),細節(jié)應該依賴抽象拟淮。
? ? ? ? 為什么叫倒轉干茉?就是開發(fā)時,為了使得常用代碼可以復用很泊,一般都會把這些常用代碼寫成許多函數庫角虫,以便后面做新項目時沾谓,去調用這些底層的函數。這就叫做高層模塊依賴低層模塊戳鹅【唬看起來沒什么事,但是如果需要更換數據庫或者存儲信息方式枫虏,這時就會有問題妇穴。底層模塊更換影響到高層模塊,也會影響到其他模塊模软。
4伟骨、里氏替換原則(Liskov Substitution Principle)
? ? 定義:子類型必須能夠替換掉他們的父類型饮潦。
? ? 引用:詳細解說
5燃异、接口隔離原則(Interface Segregation Principle)
? ? 定義:1、客戶端不應該依賴它不需要的接口
? ? ? ? ? ? ? ?2继蜡、一個類對另一個類的依賴應該建立在最小的接口上回俐。
? ? 引用:詳細解說
6、迪米特法則(Law of Demeter)又叫:最少知識原則
? ? ?定義:如果兩個類不必彼此直接通信稀并,那么這兩個類就不應當發(fā)生直接的相互作用仅颇。如果其中一個類需要調用另一個類的某一個方法的話,可以通過第三者轉發(fā)這個調用。
? ? ? 其根本思想是:強調類之間的松耦合。類之間的耦合越弱豪嗽,越有利于復用朽缎,一個處在若耦合的類被修改,不會對有關系的類造成波及庆尘。