工厂模式的意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
主要解决的问题:主要解决接口选择的问题。
何时使用:我们明确地计划不同条件下创建不同实例时。
直接看代码吧
要实现的类的共同特性是都是一个形状
public interface Shape {
void draw();
}
定义两个不同的类型
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("circle");
}
}
public class Square implements Shape {
@Override
public void draw() {
System.out.println("square");
}
}
定义一个工厂类,使得其能够根据入参的不同实例化不同的类
public class ShapeFactory {
public Shape getShape(String type){
if("circle".equals(type)){
return new Circle();
}
if("square".equals(type)){
return new Square();
}
return null;
}
}
写一个测试demo
public class FactoryDemoTest {
public static void main(String[] args){
ShapeFactory shapeFactory=new ShapeFactory();
Shape s1=shapeFactory.getShape("circle");
s1.draw();
System.out.println(s1.getClass());
}
}
可以看到我们生成的类是想要的类