【发布时间】:2015-10-27 17:04:09
【问题描述】:
假设我有一个AnimalFactory 类,它产生Dog, Cat 和Fish。
使用AnimalFactory 让事情变得非常简单,一切都很好。
我的问题是,是否有规则或良好做法建议我们隐藏 Dog、Cat 和 Fish 以防止直接使用?我的意思是Dog myDog = new Dog(); 将在代码中被禁止。
如果有,我们如何正确隐藏它们?
【问题讨论】:
-
Spring 的依赖注入可能对做这类事情很有用。
-
Java - 假设您的工厂和动物类在同一个包中,向动物构造函数添加 protected, no modifier 修饰符将禁止包外的任何东西实例化动物
-
工厂存在的原因是为了对用户隐藏产品。这是一个称为信息隐藏的原则,它减少了对可能改变的事物的依赖。
-
-
@Chrizt0f 可能与 java 9 及其模块功能有关。还有 *.internal.* 包约定。
标签: java c# design-patterns factory-pattern