首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个类之间的“创建”/instantiation关系是什么?

两个类之间的“创建”/instantiation关系是什么?
EN

Stack Overflow用户
提问于 2019-06-06 17:31:51
回答 1查看 173关注 0票数 0

来自Gamma等人的设计模式

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

我想了解这本书所说的“创造”关系意味着什么。

当A类实例化B类时,类A必须有引用对象B的字段成员,还是类A必须有创建和返回对象B的方法?

是否有使用“创建”/instantiation关系的设计模式(例如,在同一本书中描述)?我找不到它。

EN

回答 1

Stack Overflow用户

发布于 2019-06-07 06:18:06

A创建B只是指A中的代码直接创建B的实例--通过使用new关键字。代码可以在构造函数中,也可以在A的任何方法中,也可以在A的任何地方。

这种关系之所以值得关注,是因为它是一种很强的关系,即它导致了类之间的紧密耦合。当A类直接创建B类的实例时,如果不修改A的源代码,我们就不能在另一个上下文中重用A,因为我们希望A创建B的子类的实例。

为了具有这样的灵活性,我们经常使用Factory方法模式或抽象工厂模式。在这些模式中,直接创建实例的任务属于A (Factory方法)的子类或具体的工厂类(抽象工厂)。

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

https://stackoverflow.com/questions/56482491

复制
相关文章

相似问题

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