java只有一个类可以实例化所有其他类
将类的实例化限制为仅一个类的最佳实践是什么?类似于this但在Java中
假设有主类,然后有用户、管理员、视图、数据、客户端等类。只有“Main”类才能实例化所有其他类
因此,如果“User”需要在“Data”类中调用“getUser”方法,它不能实例化“Data”类和调用方法,但它必须调用“Main”类,然后“Main”将实例化“Data”类并将参数传递给其“getUser”方法
我想的是使用私有构造函数、工厂模式等,但不确定这是否会产生我需要的结果。由于复杂性,我认为内部类不是一个好的解决方案
有什么建议吗
# 1 楼答案
可以将子类与私有构造函数一起使用: 这样,只有InstanceOnClass可以创建InstanceOnClass。ArgClass和ProtectedClass的构造函数
# 2 楼答案
在概念层面上有一个明确的答案(因为在技术“如何做”方面已经有了很好的答案):
我认为这不是一个好的起点。当然,当遵循领域驱动的设计时,使用factories已经很成熟了
但有一点需要补充:你仍然希望以合理的方式削减你的“边界”。意思:不要强迫所有对象进入一个工厂。你的对象应该在某种程度上类似于它们的域,并在需要的地方分开
意思:使用工厂是可以的,但不要强迫自己进入错误的角落,强制要求有一个工厂应该处理你处理的所有类型的物品。取而代之的是:尝试合理地划分对象模型,并尽可能多地拥有概念上合理的工厂
还请注意,您可能应该区分主要提供数据/信息的对象和最终的“行为”。因此,有必要研究一下使用服务注册中心的想法(例如,如何使用netflix Eureka框架,请参见here)
最后,这里引用tucuxi给出的一个极好的评论:对于小型应用,工厂的设计过于复杂。对于更大的应用程序,我发现有一个名为“Main”的工厂,而不是以一种更正统的方式分担责任是有问题的