简单工厂模式类似于一个杂牌工厂什么都可以生产
简单工厂模式是工厂模式中最简单的一种,可能你平时也再用,就是不知道竟然是个设计模式,具体实现如下:
图形接口类
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的多态进行实现的。