时间:2021-05-22
先来复习一下设计模式的基本概念:
定义
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要重新定一个建造者就可以了。
实用范围
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 '' endend#小人一class PersionThinBuilder < PersionBuilder def head puts '头' end def body puts '瘦身体' end def arm puts '双手' end def leg puts '双脚' endend#小人二class PersionFatBuilder < PersionBuilder def head puts '头' end def body puts '胖身体' end def arm puts '双手' end def leg puts '双脚' endend#指挥者类class PersionDirect def initialize(persion) @persion = persion end def create_persion @persion.head @persion.body @persion.arm @persion.leg endendputs '这是第一个小人'p1 = PersionThinBuilder.newpd1 = PersionDirect.new(p1)pd1.create_persionputs '这是第二个小人'p2 = PersionThinBuilder.newpd2 = PersionDirect.new(p2)pd2.create_persion声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Lombok中@Builder用法1、建造者模式简介:Builder使用创建者模式又叫建造者模式。简单来说,就是一步步创建一个对象,它对用户屏蔽了里面构建的细节
本文实例讲述了PHP设计模式之建造者模式(Builder)原理与用法。分享给大家供大家参考,具体如下:这个建造者模式,我们也可以称为生成器模式,核心思想是将一个
前言Builder设计模式也叫做构建者模式或者建造者模式,名字只是一种叫法,当聊起三种名称的时候知道是怎么回事就行Builder设计模式在作者编码过程中,属于比
本文实例讲述了Java设计模式之建造者模式。分享给大家供大家参考,具体如下:建造者模式(builder)可以将部件和其组装过程分开.一步一步创建一个复杂的对象。
本文实例讲述了Android编程设计模式之Builder模式。分享给大家供大家参考,具体如下:一、介绍Builder模式是一步一步创建一个复杂对象的创建型模式,