工厂模式
工厂类Factory,负责创建具体的对象
接口类shape,所有子类的接口
众所周知,java有一个反射机制,根据类名来创建实例对象;工厂模式实际上也实现了这个反射机制,通过工厂类Factory,根据传入的类名来创建对应的实例对象(当然,这里利用了类的向上转型)。
工厂类Factory
public class ShapeFactory { public static Shape getShape(String className){ Shape shape = null; if("circle".equals(className)){ shape=new Circle(); } if("square".equals(className)){ shape=new Square(); } return shape; } }
接口类Shape
public interface Shape { void Draw(); }
具体类Circle
public class Circle implements Shape { @Override public void Draw() { System.out.println("画圆"); } }
具体类Square
public class Square implements Shape { @Override public void Draw() { System.out.println("画正方形"); } }
测试类
public class Test { public static void main(String[] args){ Shape shape=ShapeFactory .getShape("circle"); shape.Draw(); } } ---画圆
至于抽象工厂模式只是工厂模式的扩展,工厂模式是对一个类型的不同产品实现了反射机制,抽象工厂模式则是对工厂模式的工厂再进行封装到一个工厂。