摘自Gamma等人的《设计模式》
表示部分或聚合关系的对象引用为 用箭头表示,底部带有菱形。箭头指向 汇总的类(例如Shape)。
没有钻石的箭头线 表示相识(例如LineShape保留对Color对象的引用,而其他 形状可以共享)。参考名称可能会出现在底座附近以区别 其他参考文献
要显示的另一个有用的东西是实例化的类 其他的。我们使用虚线箭头表示这一点, 因为OMT不支持。我们称其为“创造” 关系。箭头指向实例化的类。在 图c,CreationTool创建LineShape对象。
我想了解这本书对“创造”关系的含义。
当类A实例化类B时,类A是否必须具有引用对象B的字段成员,或者类A必须具有创建并返回对象B的方法?
是否存在一些利用“创建” /实例化关系的设计模式(例如,在同一本书中进行了描述)?我找不到。
答案 0 :(得分:1)
A创建B 只是意味着A中的代码通过使用new
关键字直接创建B的实例。该代码可以在A的构造函数或任何方法中,也可以在A内的任何位置。
关注这种关系的原因是它是一种 strong 关系,即,它导致类之间的紧密耦合。当类A直接创建类B的实例时,我们不能在希望A创建B的子类实例的另一个上下文中重用A,而无需修改A的源代码。
为了具有这种灵活性,我们经常使用Factory Method模式或Abstract Factory模式。在这些模式中,直接创建实例的任务属于A的子类(工厂方法)或具体的工厂类(抽象工厂)。