先来复习一下设计模式的基本概念:
定义
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要重新定一个建造者就可以了。
实用范围
1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2.当构造过程必须允许被构造的对象有不同表示时。
角色
在这样的设计模式中,有以下几个角色:
1.builder:为创建一个产品对象的各个部件指定抽象接口。
2.ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。
3.Director:构造一个使用Builder接口的对象。
4.Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
下面我们来看一个实例:
需求:
画一个小人,有头,有身体,两手两脚即可。
初始代码:
# -*- encoding: utf-8 -*- #小人一 puts '这是第一个小人' puts '小人一:头' puts '小人一:瘦身体' puts '小人一:双手' puts '小人一:双脚' #小人二 puts '这是第二个小人' puts '小人二:头' puts '小人二:胖身体' puts '小人二:双手' puts '小人二:双脚'
问题:代码重复,而且容易出错,缺胳膊少腿之类的。
改进代码:
# -*- encoding: utf-8 -*- # class PersionBuilder def head puts '' end def body puts '' end def arm puts '' end def leg puts '' end end #小人一 class PersionThinBuilder < PersionBuilder def head puts '头' end def body puts '瘦身体' end def arm puts '双手' end def leg puts '双脚' end end #小人二 class PersionFatBuilder < PersionBuilder def head puts '头' end def body puts '胖身体' end def arm puts '双手' end def leg puts '双脚' end end #指挥者类 class PersionDirect def initialize(persion) @persion = persion end def create_persion @persion.head @persion.body @persion.arm @persion.leg end end puts '这是第一个小人' p1 = PersionThinBuilder.new pd1 = PersionDirect.new(p1) pd1.create_persion puts '这是第二个小人' p2 = PersionThinBuilder.new pd2 = PersionDirect.new(p2) pd2.create_persion
本文向大家介绍Java设计模式之建造者模式(Builder模式)介绍,包括了Java设计模式之建造者模式(Builder模式)介绍的使用技巧和注意事项,需要的朋友参考一下 Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们。用户不知道内部的具体
介绍 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?这就是要说的建造者模式。 建造者模式可以将一个复杂对象的构建与其表
本文向大家介绍C# 设计模式系列教程-建造者模式,包括了C# 设计模式系列教程-建造者模式的使用技巧和注意事项,需要的朋友参考一下 1. 概述 将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。 2. 建造者模式中的角色 2.1 建造者(Builder):为创建一个产品对象的各个部件指定抽象接口。 2.2 具体建造者(Concret
本文向大家介绍java实现建造者模式(Builder Pattern),包括了java实现建造者模式(Builder Pattern)的使用技巧和注意事项,需要的朋友参考一下 一、什么是建筑者模式? 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建一个复杂的对象。 一个 Builder 类会一步一步构造最终的对象,该 Builder 类独立于其他对象。 建造者
本文向大家介绍设计模式中的观察者模式在Ruby编程中的运用实例解析,包括了设计模式中的观察者模式在Ruby编程中的运用实例解析的使用技巧和注意事项,需要的朋友参考一下 观察者模式(有时又被称为发布/订阅模式)是软件设计模式的一种。 在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。 这通常透过呼叫各观察者所提供的方法来实现。 实现观察者模式的时候要注意,
本文向大家介绍实例解析Ruby设计模式编程中Strategy策略模式的使用,包括了实例解析Ruby设计模式编程中Strategy策略模式的使用的使用技巧和注意事项,需要的朋友参考一下 今天你的leader兴致冲冲地找到你,希望你可以帮他一个小忙,他现在急着要去开会。要帮什么忙呢?你很好奇。 他对你说,当前你们项目的数据库中有一张用户信息表,里面存放了很用户的数据,现在需要完成一个选择性查询用户信息