美文网首页设计模式学习小结
设计模式小结-简单工厂模式

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

作者: r09er | 来源:发表于2017-09-16 16:10 被阅读11次

简单工厂模式不属于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();
    }

小结:

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

简单工厂的优点:

  • 1.简单工厂模式实现了对象创建和使用的分离
  • 2.调用者无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数
  • 3.通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性。

缺点:

  • 1.由于工厂类集中了所有产品的创建逻辑,职责过重,一旦不能正常工作,整个系统都要受到影响
  • 2.扩展困难,一旦添加新产品就不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护

适用场景:

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

  • 1.工厂类负责创建的对象比较少,由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂
  • 2.调用者只想知道调用参数,不关心对象创建

相关文章

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • 设计模式小结-工厂方法模式

    工厂方法模式模式小结: 工厂方法模式是简单工厂模式的延伸,它继承了简单工厂模式的优点,同时还弥补了简单工厂模式的不...

  • 设计模式一、单例模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 简单单例(推荐...

  • 设计模式四、抽象工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 抽象工厂模式 ...

  • 设计模式三、工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 工厂模式 在一...

  • 设计模式

    设计模式(视频总结) [TOC] 一、简单工厂模式(Simple Factory) 简单工厂模式: 简单工厂模式属...

  • iOS设计模式-工厂模式

    工厂模式分为简单工厂模式,工厂模式、抽象工厂模式三类。 简单工厂模式 1. 定义 简单工厂模式并不是常用的设计模式...

  • Android设计模式:工厂设计模式

    目录 简单工厂模式工厂方法模式抽象工厂模式 简单工厂模式 简单工厂模式是所有工厂模式的基础,不属于23种设计模式范...

  • 相近设计模式比较

    设计模式干货: 简单工厂模式 vs. 工厂模式 vs. 抽象工厂模式简单工厂和工厂模式区别? 简单工厂没有多个子类...

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

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

网友评论

    本文标题:设计模式小结-简单工厂模式

    本文链接:https://www.haomeiwen.com/subject/fqbysxtx.html