简单工厂模式:
interface IShape {
public void draw();
}
class Circular implements IShape {
@Override
public void draw() {
System.out.println("圆形");
}
}
class Rectangle implements IShape {
@Override
public void draw() {
System.out.println("矩形");
}
}
class ShapeFactory {
public static IShape getInstance(String className) {
if("Circular".equalsIgnoreCase(className)) {
return new Circular();
}else if("Rectangle".equalsIgnoreCase(className)) {
return new Rectangle();
}else {
return null;
}
}
}
public class FactoryPatternDemo {
public static void main(String[] args) {
IShape shape = ShapeFactory.getInstance(args[0]);
shape.draw();
}
}
特点:通过使用一个共同的接口来指向实例化对象,工厂方法通常是静态,避免在获取对象时重复创建。
优点:可以根据参数的不同返回不同类的实例,相当于创建对象时的逻辑过程对客户端隐藏。
缺点:产品增加,需要添加相应的条件判断和产品类型,不利于后期维护。