设计模式学习工厂三兄弟之简单工厂总结

160 阅读2分钟

简单工厂模式定义:

简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。

简单工厂的优点:

  1. 实现对象的创建和使用分离,在工厂类的逻辑中实现对象的创建。
  2. 可以通过引入读取配置文件的方式,在不修改代码的前提下创建具体产品类,提高系统灵活性。

简单工厂的缺点:

  1. 工厂类中集中了产品的创建逻辑,职责过重。
  2. 简单工厂增加系统中类的个数,增加系统理解难度和复杂度。
  3. 在增加新产品时必须修改工厂类中创建逻辑,当产品类型较多时,不利于工厂类的维护。
  4. 简单工厂类使用了静态方法,无法形成继承的等级关系。

简单工厂的使用场景:

  1. 工厂中的创建逻辑较少,不会造成工厂方法中的逻辑复杂。
  2. 客户端只传入工厂参数,对具体类如何创建不关心。

总结:

简单工厂的工厂类提供具体产品的创建,把对象的创建和对象的使用分开。

练习:

//抽象产品类   
public interface Shape{
  public void draw();//画图
  public void erase();//擦除
}
//创建圆形   
public class Circle implements shape{
  public void draw(){ System.out.println("画圆");}//画图
  public void erase(){ System.out.println("擦除圆");}//擦除
}
//创建方形   
public class Square implements shape{
  public void draw(){ System.out.println("画矩形");}//画图
  public void erase(){ System.out.println("擦除矩形");}//擦除
}
//创建三角形   
public class Triangle implements shape{
  public void draw(){ System.out.println("画三角形");}//画图
  public void erase(){ System.out.println("擦除三角形");}//擦除
}
//创建工厂方法   
public class ShapeFactory{
  public static Shape getShape(String type) throws Exception{
      if("cricle".equals(type)){
           Shape = new Circle();
      }else if("Square".equals(type)){
          Shape = new Square();
      }else if("Triangle".equals(type)){
          Shape = new Triangle();
      }else{
          throw new Exception("UnSupportedShapeException");
      }
      return Shape;
  }
}

  //测试方法
  Shape shape;
  shape = ShapeFactory.getShape("Circle");//也可以引入静态文件进行读取
  shape.draw();
  shape.erase();

学习参考

quanke.gitbooks.io/design-patt…