设计模式学习笔记五——Prototype模式
生活随笔
收集整理的這篇文章主要介紹了
设计模式学习笔记五——Prototype模式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
動機(jī):使用原型實例指定創(chuàng)建對象的種類,然后通過拷貝這些原型來創(chuàng)建新的對象。某些結(jié)構(gòu)復(fù)雜對象面臨著劇烈變化,但擁有比較穩(wěn)定一致的接口,如何隔離出這些易變對象,使客戶程序不隨之改變?
場景:ThinkPad的主板和CPU有多種,根據(jù)系列不同,如何根據(jù)已有的硬盤和CPU生產(chǎn)新的主板和CPU。
結(jié)構(gòu)
代碼實現(xiàn)
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()
????????{
????????}
????}
}
/**//*
?*動機(jī):使用原型實例指定創(chuàng)建對象的種類,然后通過拷貝這些原型來創(chuàng)建新的對象。某些結(jié)構(gòu)復(fù)雜對象面臨著劇烈變化,但擁有比較穩(wěn)定一致的接口,如何隔離出這些易變對象,使客戶程序不隨之改變?
?*場景:ThinkPad的主板和CPU有多種,根據(jù)系列不同,如何根據(jù)已有的硬盤和CPU生產(chǎn)新的主板和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有多種,根據(jù)系列不同,如何根據(jù)已有的硬盤和CPU生產(chǎn)新的主板和CPU。
結(jié)構(gòu)
代碼實現(xiàn)
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()
????????{
????????}
????}
}
/**//*
?*動機(jī):使用原型實例指定創(chuàng)建對象的種類,然后通過拷貝這些原型來創(chuàng)建新的對象。某些結(jié)構(gòu)復(fù)雜對象面臨著劇烈變化,但擁有比較穩(wěn)定一致的接口,如何隔離出這些易變對象,使客戶程序不隨之改變?
?*場景:ThinkPad的主板和CPU有多種,根據(jù)系列不同,如何根據(jù)已有的硬盤和CPU生產(chǎn)新的主板和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;
????????}
????}
}
轉(zhuǎn)載于:https://www.cnblogs.com/Charly/archive/2007/06/06/773482.html
總結(jié)
以上是生活随笔為你收集整理的设计模式学习笔记五——Prototype模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 陌上花开 HYSBZ - 3262 (
- 下一篇: mysql 笔记四