設計模式:
·java中23中設計模式
菜鳥教程http://www.runoob.com/design-pattern/design-pattern-tutorial.html
http://www.cnblogs.com/geek6/p/3951677.htmlhtml
·整體來講設計模式分爲三大類:
建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式
行爲型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。
其實還有兩類:併發型模式和線程池模式。java
建立型模式:對象實例化的模式,建立型模式用於解耦對象的實例化過程。
結構型模式:把類或對象結合在一塊兒造成一個更大的結構。
行爲型模式:類和對象如何交互,及劃分責任和算法。算法
·六大設計原則
單一職責:一個類負責一個功能,一旦需求更改,不會受到其餘類的影響,可是若是這個功能需求又被細分,會出現更細的劃分,只能修改這個類,須要對代碼進行重構,防止功能職責的不肯定性。編程
里氏替換原則 (Liskov Substitution Principle)(是對開-閉原則的補充)
實現「開-閉」原則的關鍵步驟就是抽象化,基類與子類的繼承關係就是抽象化的具體實現,因此里氏替換原則是對實現抽象化的具體步驟的規範,就是子類能夠擴展父類的功能,但不能改變父類原有的功能,儘可能不要重寫或重載父類方法
若是非要重寫父類的方法,比較通用的作法是:原來的父類和子類都繼承一個更通俗的基類,原有的繼承關係去掉,採用依賴、聚合,組合等關係代替。設計模式
依賴倒置原則(dependence inversion principle)
所謂依賴倒置原則(Dependence Inversion Principle)就是要依賴於抽象,不要依賴於具體。實現開閉原則的關鍵是抽象化,而且從抽象化導出具體化實現,若是說開閉原則是面向對象設計的目標的話,那麼依賴倒轉原則就是面向對象設計的主要手段
經過將高層模塊轉換爲接口形式,一切都須要轉化爲抽象,不要注重細節的實現,抽象指的是接口或者抽象類,細節就是具體的實現類,使用接口或者抽象類的目的是制定好規範和契約,而不去涉及任何具體的操做,把展示細節的任務交給他們的實現類去完成。
依賴倒置原則的核心思想是面向接口編程架構
接口隔離原則(interface segregation principle)
使用多個隔離的接口,比使用單個接口要好。本意下降類之間的耦合度,而設計模式就是一個軟件的設計思想,從大型軟件架構出發,爲了升級和維護方便。因此上文中屢次出現:下降依賴,下降耦合。拆分接口,接口中不要有太多方法,不然在實現接口的時候須要將不須要的方法也要實現了,須要爲各個類創建專用的接口
接口隔離原則和單一原則的區別:
其一,單一職責原則原注重的是職責;而接口隔離原則注重對接口依賴的隔離。其二,單一職責原則主要是約束類,其次纔是接口和方法,它針對的是程序中的實現和細節;而接口隔離原則主要約束接口接口,主要針對抽象,針對程序總體框架的構建併發
迪米特法則(demeter principle)最少知道原則
一個實體應當儘可能少的與其餘實體之間發生相互做用,使得系統功能模塊相對獨立。
獨立性,不會影響到其餘模塊或者儘量不影響
低耦合,高內聚:軟件編程原則,該原則是下降類之間的耦合框架
開閉原則(open close principle)
爲了使程序的擴展性好,易於維護和升級。想要達到這樣的效果,須要面向接口編程
對擴展開放,對修改關閉,用抽象構建框架,用實現擴展細節url
·軟件開發模式線程
·生產者消費者模式https://www.cnblogs.com/chentingk/p/6497107.html生產者消費者模型具體來說,就是在一個系統中,存在生產者和消費者兩種角色,他們經過內存緩衝區進行通訊,生產者生產消費者須要的資料,消費者把資料作成產品。在日益發展的服務類型中,譬如註冊用戶這種服務,它可能解耦成好幾種獨立的服務(帳號驗證,郵箱驗證碼,手機短信碼等)。它們做爲消費者,等待用戶輸入數據,在前臺數據提交以後會通過分解併發送到各個服務所在的url,分發的那個角色就至關於生產者。消費者在獲取數據時候有可能一次不能處理完,那麼它們各自有一個請求隊列,那就是內存緩衝區了。作這項工做的框架叫作消息隊列。