工厂方法模式(英语:Factory method pattern)是一种实现了“工厂”概念的面向对象设计模式。就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题。工厂方法模式的实质是“定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。
举个例子:
public interface KFactory {
// 获取工厂实例:
static KFactory getFactory() {
return impl;
}
static KFactory impl = new KFactoryImpl();
}
public class KFactoryImpl implements KFactory {
public int parse(String s) {
return 0;
}
}
首先创建接口,并写出实现类。
public static void main(String[] args) {
KFactory factory = KFactory.getFactory();
int a = factory.parse("123.456");
}
之后可以调用接口来拿到所需要的实现。
在面向对象程序设计中,工厂通常是一个用来创建其他对象的对象。工厂是构造方法的抽象,用来实现不同的分配方案。
工厂对象通常包含一个或多个方法,用来创建这个工厂所能创建的各种类型的对象。这些方法可能接收参数,用来指定对象创建的方式,最后返回创建的对象。
我们还能通过传入不同参数得到不同的实现
public interface KFactory {
int parse(String s);
// 获取工厂实例:
static KFactory getFactory() {
return impl;
}
static KFactory getFactory(String s) {
if ("a".equals(s)) {
return implA;
}else if ("b".equals(s)) {
return implB;
}
return impl;
}
static KFactory impl = new KFactoryImpl();
static KFactory implA = new KAFactoryImpl();
static KFactory implB = new KBFactoryImpl();
}
public class KFactoryImpl implements KFactory {
public int parse(String s) {
return 0;
}
}
public class KAFactoryImpl implements KFactory {
public int parse(String s) {
return 1;
}
}
public class KBFactoryImpl implements KFactory {
public int parse(String s) {
return 2;
}
}
最后输出不一样
public static void main(String[] args) {
KFactory factory = KFactory.getFactory();
int a = factory.parse("123.456");
factory = KFactory.getFactory("a");
a = factory.parse("123.456");
factory = KFactory.getFactory("b");
a = factory.parse("123.456");
}
以上就是Java 工厂方法的一些问题。