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...