zoukankan      html  css  js  c++  java
  • “变化的流水线”:建造者模式

    在软件系统中,有时面临着一个复杂对象的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。如何提供一种"封装机制"来隔离出"各个部分"的变化,从而保持系统中的"稳定构建算法"不随需求的改变而改变?
    建造者(Builder)模式也叫生成器模式。用它来创建对象,目的是省去在对象发生变化时,需要修改代码中每一处对象创建的地方,应用这种模式,可以在一个复杂对象的内部结构(由许多其他子对象构成的结构)发生变化时,仅需要对对象有所修改,而复杂对象与其他的对象之间的关系、行为不需要进行修改。
    GOF:将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。


    举例来说, 假设有一台没有安装任何系统的苹果macbook笔记本,现在要“创建”一种集上网浏览网页,聊天和看电影这三种最基本功能的应用系统。
    这里我们可以给出两种不同的实现途径:1、安装windows操作系统,使用firefox浏览器,windows版本的qq和暴风影音。2、安装macintosh操作系统,使用mac版本下的firefox浏览器,luma qq和暴风影音。
    分析上面的两种途径,我们发现,构建系统时,操作系统,浏览器软件,聊天软件和视频软件组合到一起的算法相对稳定,但是任一种途径中,它们使用的软件(包括浏览器,聊天工具和视频软件)都会面临着剧烈的变化(比如浏览器,不管windows还是mac系统,都可能改变为使用google浏览器等)。毫无疑问,我们会利用建造者模式来应对构成复杂但构成结构和顺序相对稳定的对象的创建工作。
    看实现代码:
    Code
    最后:正如你所看到的,一个应用系统的构成都是由其子系统(从操作系统到相关软件)组合(Composite)而来的,所以建造者模式和组合模式有很多联系,通常它们都结合在一起使用。


    作者:Jeff Wong
    出处:http://jeffwongishandsome.cnblogs.com/
    本文版权归作者和博客园共有,欢迎围观转载。转载时请您务必在文章明显位置给出原文链接,谢谢您的合作。

  • 相关阅读:
    msql 计算连续签到天数
    jetty启动常用命令
    nginx负载均衡, 配置地址带端口
    IDEA java 代码格式化统一
    Linux下安装Zookeeper
    nexus admin 从文件角度进行密码重置
    Monkey测试
    接口测试
    我的IT之路
    cookie 操作(转载)
  • 原文地址:https://www.cnblogs.com/jeffwongishandsome/p/1491604.html
Copyright © 2011-2022 走看看