`

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

    博客分类:
  • .Net
阅读更多

动机:使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。某些结构复杂对象面临着剧烈变化,但拥有比较稳定一致的接口,如何隔离出这些易变对象,使客户程序不随之改变?

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

    }

}
分享到:
评论

相关推荐

    JAVA学习笔记————————

    通过阅读和学习这些JAVA学习笔记,开发者不仅可以掌握JAVA编程的基本技能,还能深入了解其设计理念,从而更好地应对各种实际开发问题。不断更新和完善自己的JAVA知识体系,对于成为一名优秀的JAVA开发者至关重要。

    Python 笔记源码——内含python后端&机器学习等.zip

    Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip ...

    设计模式学习笔记大全

    以上就是压缩包中的设计模式学习笔记涉及到的主要内容。通过对这些模式的理解和应用,开发者可以更好地解决软件设计中的问题,提升软件的质量和可维护性。每种模式都有其适用场景,理解其背后的意图和应用场景是关键...

    《设计模式学习笔记》

    《设计模式学习笔记》主要探讨了GOF的23种设计模式以及类设计的基本原则,旨在帮助开发者理解和应用这些经过时间验证的成熟解决方案。设计模式是面向对象软件设计中的核心概念,它们为解决常见的设计问题提供了标准...

    java设计模式学习笔记

    ### Java设计模式学习笔记——外观模式(Facade Pattern) #### 概述 设计模式是软件工程领域中一种解决常见问题的可复用解决方案。在Java开发过程中,掌握设计模式能够帮助开发者更好地组织代码结构,提高代码的...

    设计模式学习笔记总结

    这里我们聚焦于C#语言中的设计模式学习笔记,涵盖了多种经典的设计模式,如合成模式、桥梁模式、装饰模式、享元模式、门面模式、命令模式、工厂方法、策略模式、代理模式以及状态模式。下面将对这些模式逐一进行详细...

    学习笔记之——基于pytorch的FSRCNN

    学习笔记之——基于pytorch的FSRCNN 把我的代码上传了,后续有更正会更新这个代码

    狂神Java学习笔记————前端入门——html、css、JavaScript学习代码

    【狂神Java学习笔记——前端入门——HTML、CSS、JavaScript学习代码】是针对初学者的一份详实的学习资料,这份笔记记录了跟随B站知名up主“遇见狂神说”的java系列视频中关于前端开发的基础内容。笔记内容不仅与视频...

    C++基础学习笔记————网课

    个人网课学习笔记

    Spring.NET学习笔记22——整合WCF

    Spring.NET学习笔记22——整合WCF(应用篇) http://www.cnblogs.com/GoodHelper/archive/2010/05/15/SpringNet_Wcf.html

    Spring.NET学习笔记25——整合Quartz.NET例子

    刘冬编写Spring.NET学习笔记25——整合Quartz.NET例子。 原文: http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_QuartzNet.html

    Spring.NET学习笔记26——整合NVelocity例子

    刘冬编写的Spring.NET学习笔记26——整合NVelocity例子。 原文:http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_NVelocity.html

    Spring.NET学习笔记21——整合WebService的例子

    刘冬编写的Spring.NET学习笔记21——整合WebService的例子。 原文:http://www.cnblogs.com/GoodHelper/archive/2009/11/19/SpringNet_WebService.html

    设计模式学习笔记.ppt

    设计模式学习笔记.ppt 自己写的一点学习笔记。

    2024数据结构-学习笔记-入门必看建议收藏

    2024数据结构——学习笔记——入门必看【建议收藏】2024数据结构——学习笔记——入门必看【建议收藏】2024数据结构——学习笔记——入门必看【建议收藏】2024数据结构——学习笔记——入门必看【建议收藏】2024数据...

    HeadFirst设计模式学习笔记

    《HeadFirst设计模式学习笔记》是一份详尽的资料,旨在帮助读者深入理解并掌握设计模式这一编程领域的核心概念。设计模式是软件工程中的一种最佳实践,它在解决常见问题时提供了一种标准的解决方案,使得代码更易于...

    Android学习笔记(十)——实现新闻列表

    【第一部分】历史文章: ...Android学习笔记(五)——Toast提示、Dialog对话框、Menu菜单 Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务 Android学习笔记(七)——数据存储(共享参数Share

    Spring.NET学习笔记20——整合Remoting(应用篇)的例子

    刘冬编写Spring.NET学习笔记20——整合Remoting(应用篇)的例子 原文:http://www.cnblogs.com/GoodHelper/archive/2009/11/19/SpringNet_Remoting.html

Global site tag (gtag.js) - Google Analytics