设计模式学习笔记五——Prototype模式

ThinkPad CPU与主板原型设计模式
本文介绍了一种利用原型设计模式创建ThinkPad不同系列的CPU和主板的方法。通过继承抽象基类并实现Clone方法,可以高效地复制现有产品以生成新产品。此模式有助于隔离变化,保持接口的一致性。
动机:使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。某些结构复杂对象面临着剧烈变化,但拥有比较稳定一致的接口,如何隔离出这些易变对象,使客户程序不随之改变?

场景:ThinkPad的主板和CPU有多种,根据系列不同,如何根据已有的硬盘和CPU生产新的主板和CPU。

结构

Prototype模式结构图


代码实现

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值