logback 应用
JDBC实例
返回值是一个抽象类,必有一子类实现
这其中URLStreamHandler就相当于各种抽象产品,而其实现类即各种具体的产品
URLStreamHandlerFactory就相当于 VideoFactory
而如下 Factory 就相当于如 JavaVideoFactory/PythonVideoFactory
Logback实例
客户端获得一个类实例的传统方式是调用由类提供的public构造器。但还有一种技术,一个类可以提供public的静态工厂方法,只是一个返回类实例的静态方法。
静态工厂方法与设计模式的工厂方法模式不同。在设计模式中并无直接等价的说法。
2 优点
只需要传入一个正确的参数,即可获取所需对象,无需知其创建细节。
2.1 实名制
如果构造器的参数本身并不能描述清楚返回的对象,那么具有确切名称的静态工厂则代码可读性更佳!
例如 BigInteger 类的构造器 BigInteger(int, int, Random) 返回值多半是质数,那么最好使用静态工厂方法: BigInteger.probablePrime
一个类只能有一个带给定签名的构造器。可 SE 一般还能通过提供两个构造器来解决,而构造器的参数列表就仅在参数类型的顺序上不同。dirty code!这样的 API,用户永远无法记住该用哪个构造器,并且最终会错误地调用不合适的构造器。不阅读类文档,使用者人根本不知道代码的作用。
而静态工厂方法有确切的名称,所以没这局限。如果一个类就是需要具有相同签名的多个构造器,那么静态工厂方法就很 nice,注意精心的命名来突出它们的区别。