`
daojin
  • 浏览: 690288 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

buider模式的缺陷

 
阅读更多

http://www.cnblogs.com/happyhippy/archive/2010/09/01/1814287.html

使用builder模式的时候:

1.builder模式接口非常固定,不允许改变。

当有新产品创建任务的时候。首先是想着通过参数来控制产品的变化。其后,才是通过继承于builder,来控制产品的变化。

这就要求一开始就知道需求。而面向业务的复杂产品一开始就知道需求基本上是不可能,特别是对于客户级别的产品来说。因此builder模式只适合建造一些与业务相关性不大的产品。例如StringBuilder,SQLInsertBuilder,AlertDialogBuilder。这些builder的共同点是,在整个系统中的功能基本上都是定死的,不需要改变的。改变的只有组装过程和组成部分。像StringBuilder,不同的组装过程可能会产生不同的结果,而AlertDialogBuilder是不同的组成部分产生的不同结果。

2.如果说,非要使用客户级别的builder模式。那么下面的建议将是比较有用的:

 

 2.1如果产品的构建模式变化非常多,这样容易导致builder的子类膨胀。因此考虑一个具体buider的时候,尽量满足所有的需求,不到万不得已不要建立builder的子类。

 2.2.使用装饰者模式防止builder子类的膨胀。

 2.3.参数化builder模式,保证builder的可扩展性。

分享到:
评论

相关推荐

    23种设计模式(C++)

    Builder模式允许你分步骤构建一个复杂的对象,尤其适用于对象的构造过程复杂且独立于其组成部分的情况。通过分离构造过程和表示,Builder模式提供了更大的灵活性。 #### Prototype模式 Prototype模式通过克隆已存在...

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

    3.4BuilderPattern(建造者模式) 58 3.4.1定义 58 3.4.2现实例子——快餐店 60 3.4.3C#实例——车间造车 61 3.4.4Java实例——建造房屋 65 3.4.5优势和缺陷 69 3.4.6应用情景 70 3.5PrototypePattern(原型...

    《Java设计模式》课后习题参考答案-刘伟(20180723).pdf

    反模式的研究关注于软件开发中的负面解决方案,通过揭示不成功系统中存在的反模式,可以在成功系统中避免这些模式的出现,从而有助于降低软件缺陷和项目失败的频率。反模式可以清晰地定义出在软件开发过程中人们经常...

    14.设计模式1

    - 建造者模式(Builder):将复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 -原型模式(Prototype):通过复制已有对象来创建新对象。 3. 结构型设计模式: 结构型设计模式关注如何组合...

    labview视觉助手VBAI检测纹理缺陷

    LabVIEW视觉助手VBAI(Vision Builder for Applications Interface)是一种基于NI(National Instruments)LabVIEW平台的高级图像处理工具,专用于实现自动化检测任务,包括纹理缺陷检测。在这个专题中,我们将深入...

    Visual C++与DelphiC++Builder之比较及未来的发展前景之我见.docx

    在异常处理方面,VCL的异常处理机制在某些情况下存在缺陷,可能会导致不必要的异常抛出,而MFC在稳定性和错误处理上表现出色,其丰富的功能和低bug率赢得了开发者信赖。 未来的发展前景方面,随着软件工程向更高效...

    如何创建优雅的对象.pdf

    JavaBean不仅简化了构造过程,而且还可以配合设计模式使用,例如Builder模式,进一步提高对象构建的灵活性和安全性。 Builder模式是一种创建对象的模式,它允许用户一步一步地构建一个复杂对象。这种方式特别适合于...

    编写高效优雅Java程序.pdf

    1. 使用 Builder 模式:Builder 模式是一种创建对象的模式,通常包括抽象建造者、具体建造者、导演者和产品四个部分。这种模式可以使代码更加简洁和易于维护。 2. 避免创建不必要的对象:创建对象应该是必要的,...

    software-testing-Zheng-Renjie.rar_软件测试_C++_Builder_

    书中针对C++的特点,讲解了如何设计可测试的代码,包括模块化、面向接口编程和使用设计模式。同时,还介绍了C++测试框架,如Google Test,用于编写自动化测试用例的方法。 3. **Builder工具与测试**:Builder工具...

    NI VISION教程

    Vision Builder for AI Development Toolkit则是在AI技术日益火热的背景下,将AI技术与机器视觉相结合,使得机器视觉系统能够实现更高级的功能,比如通过机器学习算法实现模式识别、缺陷检测等复杂任务。 接下来,...

    软件工程中的设计原则.pptx

    - **建造者模式(Builder):** 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 **结构型设计模式:** - **适配器模式(Adapter):** 将一个类的接口转换成客户希望的另一个接口。 - ...

    hough变化检测直线算法可直接执行

    总结来说,这个压缩包提供的资源是一个基于Borland C++ Builder实现的Hough变换直线检测程序,具有多种检测模式,并且附带了测试图像,用户可以直接运行和体验直线检测的效果。这对于学习和研究图像处理,特别是直线...

    自考数据库系统原理简答题总结.docx

    30. 文件数据管理阶段的缺陷主要表现为数据冗余、不一致和弱联系,影响数据质量和效率。 31. 高级数据库阶段关注面向对象的概念建模和开放数据库互连技术,提高数据管理和共享的能力。 32. 概念模型是表达用户需求...

    2021管理信息系统(MIS)-管理信息系统考试题四(精选试题).doc

    题目中提到的VBScript、Delphi和PowerBuilder通常是用于C/S模式的开发工具,而ASP则常用于构建B/S模式的应用。 【文件系统的数据存取单位】 文件系统是操作系统中管理数据存储的部分。数据项是最小的数据存取单位...

    使用python开发前端.pptx

    描述中提到了前端开发的演变历程,从桌面C/S时代的成熟工具链,如Delphi、C++Builder、Visual Studio和PowerBuilder,到Web的B/S模式,再到现在的单页面应用(SPA)时代。在这个过程中,开发环境和语言需求发生了...

    使用JTAG下载EPCS器件的方法

    通常情况下,EPCS器件的配置会通过AS(Active Serial)模式进行,但在某些特定情况下,由于硬件设计缺陷或其他原因,AS模式配置可能会失败。本文将详细介绍一种替代方法——利用JTAG接口通过FlashLoader软件来配置EPCS...

Global site tag (gtag.js) - Google Analytics