工厂模式之简单工厂模式

简单工厂模式类似于一个杂牌工厂什么都可以生产
简单工厂模式是工厂模式中最简单的一种,可能你平时也再用,就是不知道竟然是个设计模式,具体实现如下:

图形接口类
package factory.simple;

/**
 * @author freedom
 * 图形接口
 */
public interface Graph {

  /**
   * 绘制图形方法
   */
  public void draw();

  /**
   * 擦除图形方法
   */
  public void erase();

}

图形实现类
圆形
package factory.simple;

/**
 * @author :  freedom
 * @Description :  绘制或擦除圆形
 * @Creation Date:  2019-11-14 7:26 上午
 */
public class Circle implements Graph {

  @Override
  public void draw() {
    System.out.println("绘制一个圆形");
  }

  @Override
  public void erase() {
    System.out.printf("擦除一个圆形");
  }
}

方形
package factory.simple;

/**
 * @author :  freedom
 * @Description :  绘制或擦除方形
 * @Creation Date:  2019-11-14 7:28 上午
 */
public class Square implements Graph {

  @Override
  public void draw() {
    System.out.println("绘制一个方形");
  }

  @Override
  public void erase() {
    System.out.println("擦除一个方形");
  }
}

长方形
package factory.simple;

/**
 * @author :  freedom
 * @Description :  绘制或擦除长方形
 * @Creation Date:  2019-11-14 7:29 上午
 */
public class Rectangle implements Graph {

  @Override
  public void draw() {
    System.out.println("绘制一个长方形");
  }

  @Override
  public void erase() {
    System.out.println("擦除一个长方形");
  }
}

异常处理类
package factory.simple;

/**
 * @author :  freedom
 * @Description :  自定义异常处理类
 * @Creation Date:  2019-11-14 7:43 上午
 */
public class UnSupportException extends Exception {

  public UnSupportException(String message) {
    super(message);
  }
}

静态方法工厂类
package factory.simple;

/**
 * @author :  freedom
 * @Description :  图形绘制简单工厂类
 * @Creation Date:  2019-11-14 7:31 上午
 */
public class SimpleFactory {

  public static String CIRCLE = "circle";
  public static String SQUARE = "square";
  public static String RECTANGLE = "rectangle";

  //简单工厂方法
  public static Graph getGraph(String graghName) throws UnSupportException {

    //根据不同的类型获得不同的图形
    Graph graph = null;
    if (CIRCLE.equalsIgnoreCase(graghName)) {
      graph = new Circle();
    } else if (SQUARE.equalsIgnoreCase(graghName)) {
      graph = new Square();
    } else if (RECTANGLE.equalsIgnoreCase(graghName)) {
      graph = new Rectangle();
    } else {
      //跑出类型不存在异常
      throw new UnSupportException("不支持绘制此类图形");
    }
    return graph;
  }
}

测试类
package factory.simple;

/**
 * @author :  freedom
 * @Description :  简单工厂模式测试类
 * @Creation Date:  2019-11-14 7:36 上午
 */
public class SimpleFactoryTest {

  public static void main(String[] args) {
    //通过静态工厂方法获取图形
    Graph graph = null;
    try {
      graph = SimpleFactory.getGraph("rectangle");
    } catch (UnSupportException e) {
      e.printStackTrace();
    }
    //绘制图形
    graph.draw();
    //擦除图形
    graph.erase();
  }
}

简单工厂模式利用了java的多态进行实现的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bigdatafreedom

你的鼓励奖是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值