设计模式之美:Builder(生成器)】的更多相关文章

Builder生成器模式(创建型模式) Builder模式缘起假设创建游戏中的一个房屋House设施,该房屋的构建由几个部分组成,且各个部分富于变化.如果使用最直观的设计方法,每个房屋部分的变化,都将导致房屋构建的重新修正... 动机(Motivation)在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将他们组合在一起的算法却非常稳定.如何应对这种变化?如何提供一种“封装机制”来隔离…
Builder模式的缘起 假设创建游戏中的一个房屋House设施,该房屋的构建由几个部分组成,且各个部分要富于变化. 如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正…… 动机(Motivation) 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定. 如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变…
动机 (Motivation) 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是它们组合在一起的算法却相对稳定. 如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统的“稳定构建算法”不随着需求改变而变化 ? 意图(Intent) 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示. ------<设计模式> GoF 结构 …
索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Builder 为每个构件定义一个操作. 实现方式(二):Builder 将构件返回给 Director,Director 将构件传递给 Builder 中的下一个步骤. 意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Separate the construction of a complex object from its representation so that the same…
创建型模式(Creational Patterns)抽象了对象实例化过程. 它们帮助一个系统独立于如何创建.组合和表示它的那些对象. 一个类创建型模式使用继承改变被实例化的类. 一个对象创建型模式将实例化委托给另一个对象. 随着系统演化得越来越依赖于对象复合而不是类的继承,创建型模式变得更为重要. 在这些模式中,有两个不断出现的主旋律: 它们都将关于该系统使用那些具体的类的信息封装起来. 它们隐藏了这些类的实例是如何被创建和放在一起的. 因此,创建型模式在什么被创建,谁创建它,它是怎样被创建的,…
一.使用场景: 1.假设要创建一个House设施,该设施的创建由若干个部分组成,而且这若干个部分经常变化. 如果用最直观的设计方式,每一个房屋部分的变化,都将导致整个房屋结构的重新修正,但是这种设计方式,维护成本太高,而且如果对象极度复杂,那么很容易就会产生问题! So,Builder  Pattern  is  userd to solve this   paogram! 2.意图 讲一个复杂对象的构建与表示相分离,使得同样的构建过程可以创建不同的表示.                    …
索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Product Trader 的示例实现. 意图 使客户程序可以通过命名抽象超类和给定规约来创建对象. Product Trader 让客户程序与 Product 类解耦,从而使得类的层级结构.框架和应用程序易于改写.配置和演进. Let clients create objects by naming an abstract superclass and by providing a specification. A Pr…
索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Null Object 的示例实现. 意图 通过对缺失对象的封装,以提供默认无任何行为的对象替代品. Encapsulate the absence of an object by providing a substitutable alternative that offers suitable default do nothing behavior. In short, a design where "nothing w…
索引 别名 意图 结构 参与者 适用性 效果 实现 实现方式(一):Dynamic Property 的示例实现. 别名 Property Properties Property List 意图 使对象可以为客户提供广泛且可扩展的属性集合. Lets an object provides a generic and extensible set of properties to clients. 结构 参与者 Object 目标对象可存储 Property 列表. 可使用不同的类型来作为 Pro…
索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Role Object 的示例实现. 意图 通过明确地附加角色对象到目标对象中,以使对象可以适配不同的客户需求.每个角色对象都代表着目标对象在客户上下文中的一种角色.每种上下文都存在于特定的应用程序中,因此可使对象在不同的应用程序间解耦. Adapt an object to different client’s needs through transparently attached role objects, each…