场景: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()
{
}
}
}
{
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()
{
}
}
}
{
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 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;
}
}
}