设计模式学习小结

设计模式小结-简单工厂模式

2017-09-16  本文已影响11人  r09er

简单工厂模式不属于Gof的23种设计模式之一,但是普遍适用于编程中,所以都会把简单工厂模式归为设计模式之一.并且作为学习工厂模式的入门模式.

示例场景:

有一个图形绘制功能,需要绘制或者擦除各种图形,例如圆形、三角形、矩形等,而且可以较为方便地对图形库进行扩展,以便能够在将来增加一些新类型的图表。

UML类图

UML类图

代码示例:

图形接口

public interface Shape {
    void draw();
    void erase();
}

三角形

public class Triangle implements Shape {

    public Triangle() {
        System.out.println("创建绘制三角形工具");
    }
    @Override
    public void draw() {
        System.out.println("绘制三角形");
    }

    @Override
    public void erase() {
        System.out.println("擦除三角形");
    }
}

图形工厂

public class ShapeFactory {

    public static Shape getShape(String type)  {
        Shape shape =null;
        if(type.equalsIgnoreCase("round")){
            shape = new Round();
        }else if(type.equalsIgnoreCase("rectangle")){
            shape = new Rectangle();
        }else if(type.equalsIgnoreCase("triangle")){
            shape = new Triangle();
        }
        return shape;
    }
}

调用

代码中使用了读取XML的配置,这样就能够在不修改代码的基础上改变绘制的图形

 public static void main(String[] args){
        Shape shape ;
        shape = ShapeFactory.getShape(SimpleFactoryXmlUtil.getShapeType());
        shape.draw();
        shape.erase();
    }

小结:

简单工厂作为设计模式是违反了面向对象设计原则中的开闭原则,需要对系统进行拓展的时候就需要修改源代码,但是这种现象在编程中会普遍存在,所以要考虑使用的场景.

简单工厂的优点:

缺点:

适用场景:

示例中用创建图形作为简单工厂的示例并不合适,因为可能会出现多种图形,并且对以后的拓展并不友好

上一篇下一篇

猜你喜欢

热点阅读