Jay*_*Kay 6 java design-patterns factory factory-pattern
在我正在研究的项目中(不是我的项目,只是在研究它),有很多这样的结构:
project.priv.logic.MyServiceImpl.java
project.priv.service.MyServiceFactoryImpl.java
project.pub.logic.MyServiceIF.java
project.pub.service.MyServiceFactoryIF.java
project.pub.service.MyServiceFactorySupplier.java
Run Code Online (Sandbox Code Playgroud)
服务的调用方式如下:
MyServiceFactorySupplier.getMyServiceFactory().getMyService()
Run Code Online (Sandbox Code Playgroud)
据我所知,工厂用于隐藏更改MyServiceImpl位置或内容的实现MyServiceImpl.但为什么我的工厂(供应商)还有另一家工厂?我认为我的Factory和FactorySupplier改变的概率大致相等.另外我还没有找到一个案例,其中创建的工厂是动态创建的(我认为这将是抽象工厂模式中的情况)但只返回MyServiceFactoryImpl.getInstance().通常的做法是实施FactorySupplier吗?有什么好处?
我可以想到几个示例(其中一些非常人为的),其中该模式可能有用。一般来说,您的服务有两个或多个实现,例如
FactorySupplier在每个示例中,在应用程序启动时都需要进行初始化,例如FactorySupplier使用区域设置或数据库类型进行参数化,并根据这些参数生成相应的工厂。
如果我理解正确,那么您的应用程序中没有任何类型的此代码,并且FactorySupplier始终返回相同类型的工厂。
也许这样做是为了实现目前还不需要的可扩展性,但恕我直言,这看起来更像是猜测应用程序在未来某个时候可能需要什么,而不是有意识的架构选择。