設計模式(二)

2021-09-29 01:45:33 字數 2164 閱讀 5025

1. 原型模式

複製乙個已經存在的例項可使程式執行更高效

應用場景

(1)類初始化需要消化非常多的資源,這個資源包括資料、硬體資源等,通過原型拷貝避免這些消耗。

(2)通過new產生的乙個物件需要非常繁瑣的資料準備或者許可權,這時可以使用原型模式。

(3)乙個物件需要提供給其他物件訪問,而且各個呼叫者可能都需要修改其值時,可以考慮使用原型模式拷貝多個物件供呼叫者使用,即保護性拷貝。

/*

* 書本型別,扮演的是concreteprototype角色,而cloneable扮演prototype角色

*/public

class

book

implements

cloneable

/** * 重寫拷貝方法

*/@override

protected book clone()

catch

(clonenotsupportedexception e)

return null;

}public arraylist

getimage()

public

void

addimage

(string img)

public string gettitle()

public

void

settitle

(string title)

/** * 列印內容

*/public

void

showbook()

system.out.

println

("----------------------end----------------------");

}}客戶端**

public

class

client02

}

淺複製 —-只是拷貝了基本型別的資料,而引用型別資料,複製後也是會發生引用,我們把這種拷貝叫做「(淺複製)淺拷貝」,換句話說,淺複製僅僅是指向被複製的記憶體位址,如果原位址中物件被改變了,那麼淺複製出來的物件也會相應改變。

深複製 —-在計算機中開闢了一塊新的記憶體位址用於存放複製的物件。

2. 策略模式

應用:此**通過模擬不同會員購物車打折力度不同分為三種策略,初級會員,中級會員,高階會員。

//策略模式 定義抽象方法 所有支援公共介面

abstract

class

strategy

class

strategya

extends

strategy

}class

strategyb

extends

strategy

}// 使用上下文維護演算法策略

class

context

public

void

calculate()

}public

class

strategytest

}

3. 觀察者模式

觀察者模式主要用於1對n的通知。當乙個物件的狀態變化時,他需要及時告知一系列物件,令他們做出相應。

//觀察者的介面,用來存放觀察者共有方法

public

inte***ce

observer

//觀察物件的父類

public

class

subjecct

// 刪除觀察者方法

public

void

removeobserver

(observer obs)

// 通知所有的觀察者更新

public

void

notifyallobserver()

}}//具體觀察者物件的實現

public

class

realobserver

extends

subjecct

public

void

setstate

(int state)

}public

class

client

}

設計模式(二) 原型設計模式

官方定義 使用原型例項指定建立物件的種類,並通過複製這個原型建立新的物件 通俗的講就是根據乙個原型建立乙個新的物件 建立的方式實質就是拷貝原型自己 而且不需要知道新物件建立的細節 1 某些物件組合起來特別複雜,而重新建立費時又費力,此時通過拷貝能達到其目的 通過 說明問題 1 定義乙個協議 impo...

設計模式 二

php物件導向設計模式中,工廠模式,從字面中就能夠以理解為,工廠模式就是在不改變原來 的結構的基礎上,依據需求的新增類定義去完畢 php header content type text html charset utf8 php設計模式 二 工廠模式 定義介面db類 inte ce db clas...

設計模式(二)

工廠模式 factory 允許你在 執行時例項化物件。它之所以被稱為工廠模式是因為它負責 生產 物件。工廠方法的引數是 你要生成的物件對應的類名稱。抽象基類 類中定義抽象一些方法,用以在子類中實現 繼承自抽象基類的子類 實現基類中的抽象方法 工廠類 用以例項化所有相對應的子類class exampl...