Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我的单例类实现了一个接口,将来我可以期待许多具体的实现出来。我正在考虑通过工厂方法创建这个类的一个实例。工厂方法可能被重载。我的问题是这个想法是好是坏?
根据您更新的评论,确保您可以做到这一点。工厂方法根据重载的参数或参数中的枚举/整数值输出持久性类的单例实现。有许多框架使用这种模式,比如给你一个客户端实例,这些实例与基于不同协议的服务器通信。
MyFactory.pbClient("host", port); MyFactory.httpClient("host", port);
如果从您的工厂方法返回的实例是单例,则无关紧要。这是一个实施选择——根据您的需要做正确的事情。
此外,如果您的方法签名返回一个接口,那么从技术上讲,它是一个抽象工厂方法,而不是工厂方法。