我正在阅读GoF,并提到了构建器的目的是将复杂对象的创建与其表示分开。
我不明白表象在这种情况下意味着什么。什么意思?
动机部分中提供的文本解析示例似乎并没有将构造与表示分开,而是将文本格式的解释算法与创建和转换格式的表示分离开来。

发布于 2016-01-01 18:01:25
兴趣的表示在这里表示(大概)从GetASCIIText或GetTexText获得的字符串结果。
必须有人创建抽象TextConverter的实例;这在您在问题中发布的图表中没有显示。
某些代码在这三个子类中选择一个来实例化,然后提供给RTFReader。
这可能如下所示:
var tx = new TexConverter ();
var rdr = new RTFReader ( tx );
rdr.ParseRTF ();
return tx.GetTexText ();在另一种情况下,
var cv = new ASCIIConverter ();
var rdr = new RTFReader ( cv );
rdr.ParseRTF ();
return cv.GetASCIIText ();有了这个额外的上下文,我们可以更清楚地看到构建责任与表示责任的分离,因为ParseRTF在这两个代码段之间被重复使用,即使每个代码段生成不同的表示。
此外,如果我们愿意的话,我们可以为TextConverter创建一个实现,它封装了其他三个,并通过一个对ParseRTF的调用创建了所有这些表示。如果不将这些责任分开,这就不容易做到。
应该指出,在这个示例中,所构造的结果数据结构不一定必须彼此一致,因此,如果需要,GetTexText可以返回与字符串不同的类型,与GetASCIIText不同;这将说明非常不同的表示形式。
https://softwareengineering.stackexchange.com/questions/306321
复制相似问题