reify實現;concrete realization 具體實現;instantiated 例項化;implementation實現;
設計模式分類:
創造型:factory method工廠模式;abstract factory抽象工廠;builder建造者;prototype原型模式;singleton單例模式;
結構型:adapter介面卡;bridge橋接;composite組合模式,decorator裝飾者;facade門面/外觀模式;flyweight享元模式;
proxy**模式;
行為型:
interpreter直譯器模式;template method模板方法模式;chain of responsibility責任鏈模式;command命令模式;iterator迭代器模式;mediator中介者模式;memento備忘錄模式;observer觀察者模式;state狀態模式;strategy策略模式;visitor訪問者模式
類模式:需要extends繼承;factory method工廠模式;class adapter介面卡;interpreter直譯器模式;template method模板方法模式;
物件模式:介面繼承;除了類模式外都是物件模式;
使用介面和建立型模式程式設計
介面實現implement代替繼承;建議不使用extend是
多型:使用派生類的重寫來重新定義基類的行為,implements是某種形式的繼承。
耦合:是程式的乙個部分對另一部分有依賴。如:全域性變數。
降低耦合,物件的實現必須對其使用者完全隱藏。
而訪問器get和修改器set都是對域為對外公開的,這樣不好;有耦合性。
組合:多使用實現介面,採用物件組合功能;在類中使用另乙個類;
模板模式
基類的**呼叫佔位方法,該佔位方法可被重寫,其真正的實現是有派生類提供。
工廠方法模式:其實就是乙個模板方法,該模板方法建立物件時,具體的類對基類來說是未知。
繼承:is-a關係
工廠模式:
抽象工廠模式是避免"必須修改所有new 呼叫"。
抽象供的所有具體化有乙個共同的主題:使用工廠建立型別尚不知道的物件。
單例模式:
私有構造器,只能建立乙個物件;
全域性訪問:
class.forname("myclass")
double check:
if (instance == null)}}
return instance;
}jvm的classloder機制避免多執行緒的同步問題,
靜態內部類:
// 靜態內部類完成, 推薦使用
class singleton
//寫乙個靜態內部類,該類中有乙個靜態屬性 singleton
private static class singletoninstance
//提供乙個靜態的公有方法,直接返回singletoninstance.instance
public static synchronized singleton getinstance()
}這種方式:
靜態內部類在類被裝載時並不會立即例項化,而是在需要例項化時,呼叫getinstance方法,才會裝載singleetoninstance類;從而完成singleton的例項化。
類的靜態屬性只會在第一次載入類的時候初始化,所以jvm保證了執行緒的安全;
1.單例模式,保證記憶體中該類只存在乙個物件,對於需要頻繁建立銷毀的物件,單例模式會提高系統效能;
2.獲得單例物件時,是使用獲取物件的方法,而不是使用new;
3.單例使用場景:工具類物件,訪問資料庫或檔案的物件;
需求:1.披薩的種類很多;
2.披薩的製作方法;
3.披薩店訂購功能;
思路:把建立pizza物件封裝到乙個類中,這樣在有新的pizza種類時,只需修改該類就可以-->簡單工廠模式;
簡單工廠定義:
1.屬於建立型模式,是工廠模式的一種。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品例項。
2.簡單工廠模式,定義乙個建立物件的類,由這個類來封裝例項化物件的行為。
3.應用場景,在用到建立某種、某類批量物件時。
public static pizza createpizza2(string ordertype) //靜態工廠模式
工廠方法模式
1.將物件例項化功能抽象成抽象方法,在子類中具體實現。
2.定義乙個建立物件的抽象方法,由子類決定要例項化的類。
工廠方法就是講物件的例項化推遲到子類
orderpizza抽象類
public abstract class orderpizza while (true);
}繼承抽象類,實現createpizza方法
public class bjorderpizzaextends orderpizza else if (ordertype.equals("pepper"))
return pizza;
}//將pizza 類做成抽象
public abstract class pizza
抽象工廠
2.抽象工廠模式將簡單工廠模式和工廠方法模式進行整合。
3.抽象工廠模式是對簡單工廠模式的改進;
4.將工廠抽象成兩層,absfactory抽象工廠和具體實現的工廠子類;可根據建立物件型別使用對應的工廠子類。這樣將單個的簡單工廠類變成了工廠族,便於**的維護和擴充套件。
//乙個抽象工廠模式的抽象層(介面)
public inte***ce absfactory
public class orderpizza
private void setfactory(absfactory factory) else
} while (true);}}
public static void main(string args)
1.工廠模式意義
將例項化物件的**提取出來,放到乙個類中統一管理和維護,達到和主專案的依賴關係的解耦。
2.設計模式依賴抽象原則;
建立物件例項時,不要直接new類,而是把這個new類的動作放在乙個工廠的方法中,並返回。
變數不要直接持有具體類的引用。
不要讓類繼承具體類,而是繼承抽象類或者是實現inte***ce介面;
不要覆蓋基類已經實現的方法;
設計模式概述
什麼是設計模式?通常會有以下幾個定義 設計模式描述了軟體設計過程中某一類常見問題的一般性解決方案。物件導向設計模式描述了物件導向設計過程中,特定場景下,類與相互通訊的物件之間常見的組織關係。每乙個模式描述了乙個在我們周圍不斷重 生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次的使用該方案...
設計模式 概述
第一章 簡單工廠模式 1.物件導向的好處 通過封裝 繼承 多型把程式的耦合度降低。用設計模式使得程式更加的靈活,容易修改,並且易於復用。簡單工廠模式 到底要例項化誰,將來會不會增加例項化的物件,比如增加開根運算,這是很容易變化的地方,應該考慮用乙個單獨的類來做這個創造例項的過程,這就是工廠。類圖 類...
設計模式概述
面試的時候,考察設計模式,就像是 天王蓋地虎,寶塔鎮河妖 一樣的黑話。在道上混,雖然不知道會碰到什麼鬼神,知道內涵意義的同時,也需要知道這些形式上的東西到底是怎麼一一表述的。不然,咋死的都不知道 設計模式的實現 設計模式的目的 對一些常用的設計模式套用上面的描述結構 實現 目的 實現 目的 實現 目...