首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >建设者模式:建筑与表现的分离

建设者模式:建筑与表现的分离
EN

Software Engineering用户
提问于 2016-01-01 17:40:21
回答 1查看 579关注 0票数 4

我正在阅读GoF,并提到了构建器的目的是将复杂对象的创建与其表示分开。

我不明白表象在这种情况下意味着什么。什么意思?

动机部分中提供的文本解析示例似乎并没有将构造与表示分开,而是将文本格式的解释算法与创建和转换格式的表示分离开来。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2016-01-01 18:01:25

兴趣的表示在这里表示(大概)从GetASCIITextGetTexText获得的字符串结果。

必须有人创建抽象TextConverter的实例;这在您在问题中发布的图表中没有显示。

某些代码在这三个子类中选择一个来实例化,然后提供给RTFReader

这可能如下所示:

代码语言:javascript
复制
var tx = new TexConverter ();
var rdr = new RTFReader ( tx );
rdr.ParseRTF ();
return tx.GetTexText ();

在另一种情况下,

代码语言:javascript
复制
var cv = new ASCIIConverter ();
var rdr = new RTFReader ( cv );
rdr.ParseRTF ();
return cv.GetASCIIText ();

有了这个额外的上下文,我们可以更清楚地看到构建责任与表示责任的分离,因为ParseRTF在这两个代码段之间被重复使用,即使每个代码段生成不同的表示。

此外,如果我们愿意的话,我们可以为TextConverter创建一个实现,它封装了其他三个,并通过一个对ParseRTF的调用创建了所有这些表示。如果不将这些责任分开,这就不容易做到。

应该指出,在这个示例中,所构造的结果数据结构不一定必须彼此一致,因此,如果需要,GetTexText可以返回与字符串不同的类型,与GetASCIIText不同;这将说明非常不同的表示形式。

票数 4
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/306321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档