Ruby设计模式编程中使用Builder建造者模式的实例实用指南
平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Ruby设计模式编程中采用Builder建造者模式的实例”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
先来复习一下设计模式的基本概念:
定义
从实现思路看,将一个复杂对象的构建与它的表示分离,使得同样的构建过程能够新建不同的表示。
在这个场景下,建造者隐藏了该产品是如何组装的,所以若需改变一个产品的内部表示,只需重新定一个建造者就能够了。
实用范围
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
您可能感兴趣的文章:
- 设计模式中的观察者模式在Ruby编程中的运用实例解析
- 实例解析Ruby设计模式开发中对观察者模式的实现
- 深入剖析Ruby设计模式编程中对命令模式的相关采用
- Ruby设计模式编程中对外观模式的应用实例分析
- 详解组合模式的结构及其在Ruby设计模式编程中的运用
- 设计模式中的模板方法模式在Ruby中的应用实例两则
- 实例解析Ruby设计模式编程中Strategy策略模式的采用
- 实例讲解Ruby采用设计模式中的装饰器模式的方法
- 详解Ruby设计模式编程中对单例模式的运用
- Ruby设计模式编程之适配器模式实战攻略
- Ruby采用设计模式中的代理模式与装饰模式的代码实例
- Ruby中采用设计模式中的轻松工厂模式和工厂方法模式
- 解析proxy代理模式在Ruby设计模式开发中的运用
相关资讯
-
10.18
vue3中的事件修饰符完整指南
-
10.17
Codex CLI 登录失败排查流程:从命令状态、浏览器回调到脱敏支持记录实用指南
-
10.17
Redis基础篇之特性、使用场景与配置指南实用指南
-
10.17
WSL2+Docker+Ollama本地部署大模型思路和实践指南(Qwen1.8b)实用指南
-
10.17
Codex手写自动重试工具:解决capacity与overloaded报错的实用方案实用指南
-
10.17
DeepSeek Harness热门插件盘点:10个实用插件,覆盖多Agent、上下文和多模态实用指南
游戏推荐
推荐专题
热门阅读
-
-
-
- 逻辑游戏有哪些好玩的逻辑游戏推荐
- 09.03
-
-
- MiniMax_Agent工具调用频率受限怎么办
- 09.03
推荐下载
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏