来自Gamma等人的设计模式
表示部分或聚合关系的对象引用由箭头线表示,其中底部有一颗钻石。箭头指向聚合的类(例如,形状)。 没有菱形的箭头线表示熟人(例如,LineShape保留对颜色对象的引用,其他形状可以共享)。引用的名称可能出现在基座附近,以区别于其他引用。 另一件有用的事情是,哪些类实例化了,哪些类实例化了其他类。我们使用虚线箭头表示这一点,因为OMT不支持它。我们称之为“创造”关系。箭头指向实例化的类。在图c中,CreationTool创建LineShape对象。

我想了解这本书所说的“创造”关系意味着什么。
当A类实例化B类时,类A必须有引用对象B的字段成员,还是类A必须有创建和返回对象B的方法?
是否有使用“创建”/instantiation关系的设计模式(例如,在同一本书中描述)?我找不到它。
发布于 2019-06-07 06:18:06
A创建B只是指A中的代码直接创建B的实例--通过使用new关键字。代码可以在构造函数中,也可以在A的任何方法中,也可以在A的任何地方。
这种关系之所以值得关注,是因为它是一种很强的关系,即它导致了类之间的紧密耦合。当A类直接创建B类的实例时,如果不修改A的源代码,我们就不能在另一个上下文中重用A,因为我们希望A创建B的子类的实例。
为了具有这样的灵活性,我们经常使用Factory方法模式或抽象工厂模式。在这些模式中,直接创建实例的任务属于A (Factory方法)的子类或具体的工厂类(抽象工厂)。
https://stackoverflow.com/questions/56482491
复制相似问题