`
凤舞凰扬
  • 浏览: 66949 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

架构、框架、模式之轻松掌握设计模式(原型模式)

阅读更多
   好了,到了构建类型模式中的最后一种(当然是GOF)原型模式了。这个模式似乎是被讨论得最少的,原因是在Java中,Object本身便带有clone的方法(当然,它需要使用实现Cloneable接口的方式来激活)。而基于原型的clone也相对比较少的使用(最主要的原因是比较难以确定是深度clone还是浅度clone)。
   我们追溯不了这种模式的起源和ghost有何关系(其实根本就没有任何关系),只是感觉这样的一种模式,在现实生活中又是那么的常见。我们经常在安装好操作系统以及必备的软件后(比如升级包,office等等),将系统用ghost备份一下,这样可以让我们有问题的适合尽快还原。而许多大公司在管理公司机器的时候也是采用统一的clone包,快速安装和恢复系统。这些生活其实也就描述了clone的背景:简单而又能快速地去产生所期望的对象的副本。所期望的对象自然就是原型对象了。
   不过,现实生活中的另外一些例子,也可以给我们另样的思考。我们经常会发现,我们有时候使用clone的系统很不稳定,时不时有死机出问题的情况,而公司进行clone还原也是经常对同样配置的电脑进行操作,甚至不允许修改分区(我们公司的电脑都只有一个C区,哪怕它有200G)。这是为何呢?这便是作为原型存在的另外一种背景,那就是相同的环境。在不同的电脑配置中(只是因为都使用基于X86结构的通用配置,所以问题出现较少,但依然存在),通过镜像而还原的系统往往是不稳定的,因为许多系统环境的配置变了。我们也知道,在原型模式中其实有和实际生活中的clone还有个小小区别,也就是可以控制clone的程度(模式中当然可以通过不同实现来控制对象的深度clone或者浅度clone,而现实生活中往往是完全复制)。我们将这种思考带到原型模式的应用中来说吧。使用原型对象所产生的新对象副本在其使用环境下是否又跟原型对象一致呢?这其实决定了两点,一是我们要进行怎么样的clone实现,二是是否该提供这种模式来创建我们的对象。
   上周有些事情,一直没有写完,也没有更新, 今天继续.....
   原型模式在使用的时候,容易遇到这样的问题和误区: 我们常常希望通过clone的方式降低对象复制的曝光度(对于使用者来说,不需要关心对象是怎么样复制的),但是我们往往忽略了一些因素和条件限制, 第一,内部的状态属性是否具备或者能是否准许被复制? 第二,究竟该做到何种程度的复制?(由对象关联引发出来的对象链究竟是共用还是继续复制?) 而这类问题往往在设计之初是很难预料和估计的.
分享到:
评论

相关推荐

    小D深入浅出设计模式+框架源码剖析实战

    ├─第一章 旭瑶-小滴架构师成长系列软件设计模式课程介绍 │ 1.2设计模式全家桶课程大纲速览.mp4 │  ├─第二章 想成为架构师的你,不可不知道的设计模式精髓 │ 2.1设计模式的六大原则你知道多少.mp4 │ 2.3...

    程序设计模式与架构

    本文重点介绍了程序设计模式与架构中的几个关键概念,包括创建型模式、结构型模式和行为型模式,以及网站开发架构模式中的MVC框架。设计模式为软件开发提供了一种标准化的方法来解决问题,而架构模式则关注于整体的...

    java设计模式和30种java架构图.zip

    Java设计模式和架构图是软件开发中的重要概念,它们对于构建高效、可维护的系统至关重要。设计模式是解决常见编程问题的经验总结,而架构图则是系统结构的可视化表示,帮助我们理解和规划系统的整体布局。 首先,...

    java模式,设计模式,多种设计模式

    2. **基础性**:有些J2EE设计模式实际上是建立在某些软件开发设计模式之上的。 3. **影响性**:软件开发设计模式为J2EE设计模式提供了坚实的基础,其应用将直接影响整个结构的稳定性和可扩展性。 #### 五、设计模式...

    Laravel框架设计模式分析及应用.pdf

    Laravel框架设计模式分析及应用 本文对Laravel框架的设计模式进行了深入分析和应用,包括工厂模式、单例模式、注册树模式、适配器模式、策略模式、数据对象映射模式、观察者模式、原型模式、装饰器模式、迭代器模式...

    Mybatis 框架源码10种设计模式分析.pdf

    文章首先提醒读者,学习设计模式和框架源码的重要性,不仅仅是为了应付面试,而是为了提高自己的技术水平和架构思维能力。 文章接着介绍了 Mybatis 框架源码中的 10 种设计模式应用,包括工厂模式、单例模式、原型...

    二十三种设计模式【PDF版】

    设计模式之 Prototype(原型) 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 B. 结构模式 设计模式之 Adapter(适配器) 使用类再生的两个方式:组合(new)和继承(extends),这个已经在 ...

    深入浅出设计模式附书源码Java版源码

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的可重用解决方案。深入浅出设计模式附书源码Java版源代码,是面向Java开发者的宝贵资源,旨在帮助他们理解和实践各种设计模式。这本书籍的源代码...

    Spring 框架的设计理念与设计模式分析

    Spring 框架作为Java开发中最受欢迎的框架之一,其设计理念和设计模式的应用对于理解和优化软件设计具有重要意义。本文将深入探讨Spring的核心组件、设计理念以及其中蕴含的设计模式。 Spring 的骨骼架构主要由三个...

    java设计模式

    目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式

    23种JAVA设计模式和15种J2EE设计模式

    原型模式是一种创建型的设计模式,它使用现有的对象实例作为原型通过复制的方式来创建新的对象。例如,在编写情书时,可以有一个基本的情书模板,根据不同的情况对其进行修改和个性化处理。这样既保证了基础结构的...

    java设计模式中英文各种版本打包下载 学习设计模式必备材料

    此外,设计模式还有助于理解J2EE框架,如Spring框架就大量应用了设计模式,如依赖注入(DI)利用了工厂模式和构造器模式,AOP(面向切面编程)则采用了代理模式等。 总之,Java设计模式是软件开发中的重要工具,...

    w3school 设计模式教程 飞龙整理 20141001

    掌握这些设计模式对于提升软件设计能力至关重要。通过理解和应用设计模式,开发者可以更高效地解决问题,编写出更可靠、易于扩展和维护的代码,从而推动软件工程的标准化和专业化。在实际项目中,根据具体需求选择...

    3层架构原型

    三层架构是一种常见的软件系统设计模式,它将应用分为三个主要部分:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这种架构旨在提高系统的可维护性、可...

    韩顺平_Java设计模式笔记.docx

    - **应用场景**:从面向对象的设计到具体项目的功能模块,再到各种框架和架构层次,设计模式无处不在,帮助开发者构建更加健壮、可维护的软件系统。 #### 1.2 课程亮点和授课模式 - **课程亮点**:本课程强调设计...

    深入浅出设计模式(中文版)

    《深入浅出设计模式》是一本专为Java开发者编写的关于设计模式的中文教材,它旨在帮助读者理解和掌握设计模式这一编程领域的核心概念。设计模式是软件开发中的经验总结,是解决常见问题的有效模板,通过将成熟的设计...

    后台管理框架axure原型模板

    这些模块的设计和实现需遵循清晰的架构原则,如MVC(Model-View-Controller)模式,确保代码的可维护性和扩展性。 3. **原型设计**:在设计后台管理框架时,原型是必不可少的步骤,它能直观地展示界面布局、功能...

    设计模式相关资料

    总的来说,设计模式是软件开发中的一种宝贵资源,通过学习和掌握设计模式,我们可以提高代码质量,提升团队间的沟通效率,同时为未来的扩展和维护打下坚实基础。对于任何想要深入理解软件设计的开发者来说,研究设计...

    设计模式代码实现+源码设计模式分析

    在《设计模式代码实现》部分,我们将深入学习23种经典的GOF(GoF, Gamma, Helm, Johnson, Vlissides)设计模式,包括创建型模式(如单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式)、结构型模式(如...

Global site tag (gtag.js) - Google Analytics