概述
看此文的友人需要先了解Simple Factory
Static Factory Method
这个工厂设计模式的目的
提供一个封装在名为factory的类中的静态方法,以便隐藏实现逻辑并使客户机代码关注于使用,而不是初始化新对象。
现实中的例子如果原来你的程序是使用Oracle数据库的,现在需要换到mysql数据库中。我们需要实现Simple Factory模式,在该模式中可以调用静态方法来创建到给定数据库的连接。
我们看看维基百科上的翻译Factory是一个用于创建其他对象的对象,工厂是一个函数或方法,它返回一个不同原型或类的对象。
代码实例
我们创建一个interfacePhone 和两个实现类 Huawei and Iphone.
public interface Phone {
String getDescription();
}
public class Huawei implements Phone {
static final String DESCRIPTION = "This is Huawei.";
@Override
public String getDescription() {
return DESCRIPTION;
}
}
public class Iphone implements Phone {
static final String DESCRIPTION = "This is Iphone.";
@Override
public String getDescription() {
return DESCRIPTION;
}
}
下面的枚举表示我们支持的手机类型 (Huawei and Iphone).
public enum PhoneType {
HUAWEI(Huawei::new),
IPHONE(Iphone::new);
private final Supplier constructor;
PhoneType(Supplier constructor) {
this.constructor = constructor;
}
public Supplier getConstructor() {
return this.constructor;
}
}
我们会有个静态方法 getPhone在工厂类 PhonesFactory中 生产不同的PhoneType类
public class PhonesFactory {
public static Phone getPhone(PhoneType type) {
return type.getConstructor().get();
}
}
调用的时候我们会使用 factory class生产出不同的PhoneType.
var huawei = PhonesFactory.getPhone(PhoneType.HUAWEI);
var iphone = PhonesFactory.getPhone(PhoneType.IPHONE);
类图:
适用性
优点:
允许将所有对象创建在一个地方,避免在代码库中传播“new”关键字。
允许编写松散耦合的代码。它的一些主要优点包括更好的可测试性、易于理解的代码、可交换的组件、可伸缩性和隔离特性。
缺点:
如果本来就比较简单的业务。会让代码看起来更复杂
开源项目中用到这个设计的地方:
最后
以上就是鳗鱼星星为你收集整理的java factory类_推荐优雅工厂设计模式(Java)的全部内容,希望文章能够帮你解决java factory类_推荐优雅工厂设计模式(Java)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复