工厂方法模式分为三种:
最后,建工厂类:
写一个测试类,测试结果
1、普通工厂模式:就是建立一个工厂类用于创建实现了同一接口的一些类的实例
看下面实例代码:
1.1 创建一个接口
public interface Creator {
public void funC();
}
1.2创建两个实现接口的类
public class First implements Creator {
@Override
public void funC() {
System.out.println("Create func01");
}
}
public class Second implements Creator {
@Override
public void funC() {
System.out.println("Create func02");
}
}
最后,建工厂类:
public class CreatorFactory {
public Creator create(String type) {
if ("first".equals(type)) {
return new First();
} else if ("second".equals(type)) {
return new Second();
} else {
System.out.println("输入的类型错误");
return null;
}
}
}
写一个测试类,测试结果
public class FactoryTest {
public static void main(String[] args) {
CreatorFactory factory = new CreatorFactory();
Creator creator = factory.create("first");
creator.funC();
Creator creator = factory.create("second");
creator.funC();
}
}
输出结果:
Create func01
Create func02
2、多个工厂方法模式:是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。修改一下工厂类就行了:
public class CreatorFactory {
public Creator createFirst() {
return new First();
}
public Creator createSecond() {
return new Second();
}
}
测试类:
public class FactoryTest {
public static void main(String[] args) {
CreatorFactory factory = new CreatorFactory();
Creator creator = factory.createFirst();
creator.funC();
Creator creator = factory.createSecond();
creator.funC();
}
}
测试结果同上
3、静态工厂方法模式:静态工厂方法模式就是将工厂中创建实例的方法改为静态,这样在实际创建对象是就不需要再去实例化工厂类
如下修改工厂类:
public class CreatorFactory {
public static Creator createFirst() {
return new First();
}
public static Creator createSecond() {
return new Second();
}
}
测试类:
public class FactoryTest {
public static void main(String[] args) {
Creator creator = CreatorFactory.createFirst();
creator.funC();
Creator creator = CreatorFactory.createSecond();
creator.funC();
}
}
测试结果同上