gpt4 book ai didi

java - 我应该在层次结构之外创建一个对象,还是传递参数在层次结构内部创建它?

转载 作者:搜寻专家 更新时间:2023-11-01 02:45:52 27 4
gpt4 key购买 nike

我找不到类似的问题,所以我问自己的问题。如果这实际上是一个重复的问题,我很抱歉。(此外,虽然我用 Java 标记了这个问题,但它更像是一个一般的 OOP 问题)

假设我有一个这样的类层次结构:一个名为“RestaurantManager”的经理类,其中有“Restaurants”和“Dishes”。

创建 Restaurant 或 Dish 时,我应该在 RestaurantManager 之外创建它们,还是将参数传递给 Manager,以便它可以实例化内部的对象?

换句话说,我应该这样做吗:

RestaurantManager manager;
manager.addRestaurant(new Restaurant(name));

或者这个:

RestaurantManager manager;
manager.addRestaurant(name);

如果 RestaurantManager 有餐厅或菜肴的内部标识符怎么办?

这更像是一个很好的实践问题,但最佳选择是什么?

最佳答案

没有普遍的“最佳”选择 - 两种方法各有优缺点。

第一种方法允许您通过额外的子类扩展层次结构(例如,您可以定义 class Diner extends Restaurant 和 class FastFoodPlace extends Restaurant,并将它们传递给您的 RestaurantManager。您还可以更改 Restaurant 构造函数的签名,而不会影响 RestaurantManager 的方法。

第二种方法让 RestaurantManager 从调用者那里“拥有”Restaurant 的实现,将其隐藏在一些接口(interface)后面,不让外界看到。除其他事项外,它还让 RestaurantManager 决定 Restaurant 是否拥有 key 、何时以及如何设置 key ,等等。

您可以根据自己的需要选择一种或另一种方法。第一种方法在 RestaurantManager 之外提供了更多的灵 active ,而第二种方法在 RestaurantManager 内部提供了更好的封装。管理器和层次结构之间的耦合变得更加紧密,这使得扩展层次结构变得更加困难。

关于java - 我应该在层次结构之外创建一个对象,还是传递参数在层次结构内部创建它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22274505/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com