专栏名称: 逸言
文学与软件,诗意地想念。
目录
相关文章推荐
程序员小灰  ·  疯了!下载 DeepSeek 最高判20年! ·  4 天前  
OSC开源社区  ·  DeepSeek-V3满血版在国产沐曦GPU ... ·  3 天前  
OSC开源社区  ·  国内AI适配再下一城:天数智芯加入,Deep ... ·  4 天前  
OSC开源社区  ·  《7天精通DeepSeek实操手册》 ·  5 天前  
程序员小灰  ·  第一期AI特训,我们要发车了! ·  6 天前  
51好读  ›  专栏  ›  逸言

第17章 建造者模式应用

逸言  · 公众号  · 程序员  · 2023-06-21 11:59

正文

◇ 类别:软件设计
◇ 字数:7300字

◇ 阅读时长:19分钟

在GOF所著的《设计模式》一书中,描述了建造者(Builder)模式的意图:“将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。”按照封装变化的原理,建造者模式实则是封装对象创建的变化,但它与工厂方法模式、抽象工厂模式不同的是,所谓对象的创建,主要是指对象内部构件的创建。形象地说,建造者模式就好似生产线的装配工人,可以接收多种方式与顺序组装各种零部件。本章,将给出我参与设计与开发的CIMS系统中的一个需求,详细讲解建造者模式的应用。

17.1  装配设备对象

在CIMS(Computer Integrated Manufacture System)项目中,有这样一个需求。系统中需要创建Equipment对象,这些对象由Machine对象和多个Port对象组成。Port对象包含两种类型:Input与Output。在Machine对象中,定义了PortType属性,它的值与Port对象的类型相对应。从目前的需求来看,Equipment对象,存在如下3种组成情况。
  • 一个Machine对象,一个Input类型的Port对象;
  • 一个Machine对象,一个Output类型的Port对象;
  • 一个Machine对象,一个Input类型的Port对象,一个Output类型的Port对象。

客户方不排除将来有增加新的Equipment组合的可能。
需求清晰而简单,我们可以非常容易地识别出Port、Machine、Equipment对象。Port类的定义如下:
public abstract class Port{    public abstract void Transfer();}
public class InputPort:Port






请到「今天看啥」查看全文