設計模式概述

2021-10-24 10:59:39 字數 3453 閱讀 6853

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.物件導向的好處 通過封裝 繼承 多型把程式的耦合度降低。用設計模式使得程式更加的靈活,容易修改,並且易於復用。簡單工廠模式 到底要例項化誰,將來會不會增加例項化的物件,比如增加開根運算,這是很容易變化的地方,應該考慮用乙個單獨的類來做這個創造例項的過程,這就是工廠。類圖 類...

設計模式概述

面試的時候,考察設計模式,就像是 天王蓋地虎,寶塔鎮河妖 一樣的黑話。在道上混,雖然不知道會碰到什麼鬼神,知道內涵意義的同時,也需要知道這些形式上的東西到底是怎麼一一表述的。不然,咋死的都不知道 設計模式的實現 設計模式的目的 對一些常用的設計模式套用上面的描述結構 實現 目的 實現 目的 實現 目...