gpt4 book ai didi

java - 只有一个类可以实例化所有其他类

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:59:59 24 4
gpt4 key购买 nike

将类的实例化限制为仅一个类的最佳做法是什么?类似于 this但在 Java 中。

假设有 Main 类,然后有 User、Admin、View、Data、Client 等类。只有“主”类应该能够实例化所有其他类。

所以如果'User'需要调用'Data'类中的'getUser'方法,它不能实例化'Data'类并调用方法,而是必须调用'Main'类,然后'Main'会实例化“Data”类并将参数传递给它的“getUser”方法。

我在想的是使用私有(private)构造函数、工厂模式等,但不确定这是否会产生我需要的结果。由于复杂性,我认为内部类不是很好的解决方案。

对此有什么建议吗?

最佳答案

概念层面的明确答案(因为在技术“如何做”方面已经有了很好的答案):

Let's say there is Main class, then there are User, Admin, View, Data, Client etc. classes. Only 'Main' class should be able to instantiate all other classes.

我认为这不是一个好的起点。当然,当遵循领域驱动设计时,使用 factories已经很成熟了。

但有一点需要补充:您仍然希望以合理的方式削减您的“界限”。意思是:不要将所有对象强制放入单个 工厂。您的对象应该以某种方式类似于它们的域,并在需要的地方分开。

意思是:使用工厂是可以的,但是不要强制自己进入错误的角落,强制要求只有一个工厂应该处理所有类型的你处理的对象。相反:尝试合理地划分您的对象模型,并拥有尽可能多的概念上有意义的工厂。

另请注意,您可能应该区分主要提供数据/信息的对象和末尾的“行为”。因此,可能值得研究拥有一个服务注册表的想法(例如,您使用 netflix Eureka 框架所做的事情,请参阅 here)。

最后,引用 tucuxi 给出的精彩评论这里:对于小型应用程序,工厂过度设计。对于较大的应用程序,我发现拥有一个名为“Main”的工厂而不是以更正统的方式划分职责是有问题的。

关于java - 只有一个类可以实例化所有其他类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56019143/

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