设计模式学习笔记五——Prototype模式
生活随笔
收集整理的這篇文章主要介紹了
设计模式学习笔记五——Prototype模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
動機:使用原型實例指定創建對象的種類,然后通過拷貝這些原型來創建新的對象。某些結構復雜對象面臨著劇烈變化,但擁有比較穩定一致的接口,如何隔離出這些易變對象,使客戶程序不隨之改變?
場景:ThinkPad的主板和CPU有多種,根據系列不同,如何根據已有的硬盤和CPU生產新的主板和CPU。
結構
代碼實現
namespace?DesignPattern.Prototype
{
????public?abstract?class?CPU
????{
????????public?abstract?CPU?Clone();
????????//?打上流水線序列號之類每個克隆品不同的屬性
????????public?abstract?void?DoSomething();
????}
????public?class?T43CPU?:?CPU
????{
????????public?override?CPU?Clone()
????????{
????????????return?(CPU)this.MemberwiseClone();
????????}
????????public?override?void?DoSomething()
????????{
????????}
????}
????public?class?T60CPU?:?CPU
????{
????????public?override?CPU?Clone()
????????{
????????????return?(CPU)this.MemberwiseClone();
????????}
????????public?override?void?DoSomething()
????????{
????????}
????}
}
namespace?DesignPattern.Prototype
{
????public?abstract?class?Mainboard
????{
????????public?abstract?Mainboard?Clone();
????????//?打上流水線序列號之類每個克隆品不同的屬性
????????public?abstract?void?DoSomething();
????}
????public?class?T43Mainboard?:?Mainboard
????{
????????public?override?Mainboard?Clone()
????????{
????????????return?(Mainboard)this.MemberwiseClone();
????????}
????????public?override?void?DoSomething()
????????{
????????}
????}
????public?class?T60Mainboard?:?Mainboard
????{
????????public?override?Mainboard?Clone()
????????{
????????????return?(Mainboard)this.MemberwiseClone();
????????}
????????public?override?void?DoSomething()
????????{
????????}
????}
}
/**//*
?*動機:使用原型實例指定創建對象的種類,然后通過拷貝這些原型來創建新的對象。某些結構復雜對象面臨著劇烈變化,但擁有比較穩定一致的接口,如何隔離出這些易變對象,使客戶程序不隨之改變?
?*場景:ThinkPad的主板和CPU有多種,根據系列不同,如何根據已有的硬盤和CPU生產新的主板和CPU。
*/
namespace?DesignPattern.Prototype
{
????public?class?ThinkPadFactory
????{
????????public?Mainboard?CreateMainboard(Mainboard?mainBoard)
????????{
????????????Mainboard?mainBoardCopy?=?mainBoard.Clone();
????????????mainBoardCopy.DoSomething();
????????????return?mainBoard;
????????}
????????public?CPU?CreateCPU(CPU?cpu)
????????{
????????????CPU?cpuCopy?=?cpu.Clone();
????????????cpu.DoSomething();
????????????return?cpu;
????????}
????}
}
場景:ThinkPad的主板和CPU有多種,根據系列不同,如何根據已有的硬盤和CPU生產新的主板和CPU。
結構
代碼實現
namespace?DesignPattern.Prototype
{
????public?abstract?class?CPU
????{
????????public?abstract?CPU?Clone();
????????//?打上流水線序列號之類每個克隆品不同的屬性
????????public?abstract?void?DoSomething();
????}
????public?class?T43CPU?:?CPU
????{
????????public?override?CPU?Clone()
????????{
????????????return?(CPU)this.MemberwiseClone();
????????}
????????public?override?void?DoSomething()
????????{
????????}
????}
????public?class?T60CPU?:?CPU
????{
????????public?override?CPU?Clone()
????????{
????????????return?(CPU)this.MemberwiseClone();
????????}
????????public?override?void?DoSomething()
????????{
????????}
????}
}
namespace?DesignPattern.Prototype
{
????public?abstract?class?Mainboard
????{
????????public?abstract?Mainboard?Clone();
????????//?打上流水線序列號之類每個克隆品不同的屬性
????????public?abstract?void?DoSomething();
????}
????public?class?T43Mainboard?:?Mainboard
????{
????????public?override?Mainboard?Clone()
????????{
????????????return?(Mainboard)this.MemberwiseClone();
????????}
????????public?override?void?DoSomething()
????????{
????????}
????}
????public?class?T60Mainboard?:?Mainboard
????{
????????public?override?Mainboard?Clone()
????????{
????????????return?(Mainboard)this.MemberwiseClone();
????????}
????????public?override?void?DoSomething()
????????{
????????}
????}
}
/**//*
?*動機:使用原型實例指定創建對象的種類,然后通過拷貝這些原型來創建新的對象。某些結構復雜對象面臨著劇烈變化,但擁有比較穩定一致的接口,如何隔離出這些易變對象,使客戶程序不隨之改變?
?*場景:ThinkPad的主板和CPU有多種,根據系列不同,如何根據已有的硬盤和CPU生產新的主板和CPU。
*/
namespace?DesignPattern.Prototype
{
????public?class?ThinkPadFactory
????{
????????public?Mainboard?CreateMainboard(Mainboard?mainBoard)
????????{
????????????Mainboard?mainBoardCopy?=?mainBoard.Clone();
????????????mainBoardCopy.DoSomething();
????????????return?mainBoard;
????????}
????????public?CPU?CreateCPU(CPU?cpu)
????????{
????????????CPU?cpuCopy?=?cpu.Clone();
????????????cpu.DoSomething();
????????????return?cpu;
????????}
????}
}
轉載于:https://www.cnblogs.com/Charly/archive/2007/06/06/773482.html
總結
以上是生活随笔為你收集整理的设计模式学习笔记五——Prototype模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 陌上花开 HYSBZ - 3262 (
- 下一篇: Java与.Net 在RSA加密方面能不