工厂模式可以分为:①简单工厂模式 ②普通工厂模式 ③静态工厂模式 ④抽象工厂模式
简单工厂模式:就是如何去实例化对象的问题,对于很容易变化的问题,应该考虑用一个单独的类来做这个创造实例的过程,这个单独的类就是工厂
例子:通过简单工厂创建各种图形的实现过程
简单工厂模式创建步骤:
①创建一个接口(例:图形接口) ②创建实现接口的实体类(例:长方形、正方形、圆形) ③创建一个工厂类(创建各种图形的工厂),工厂类中提供一个根据传入具体类型而获取接口对应实体类的方法。
1.创建一个形状的接口
public interface Shape {
public void draw();
}
2.实现接口来创建具体实体类
public class Square implements Shape{
@Override
public void draw() {
System.out.println("我是一个正方形");
}
}
public class Rectangle implements Shape{
@Override
public void draw() {
System.out.println("我是一个长方形");
}
}
public class Circular implements Shape{
@Override
public void draw() {
System.out.println("我是一个圆形");
}
}
3.创建工厂类,提供一个方法,根据传入的类型来创建接口对应的实体类
public class FactoryPattern {
public Shape getShape(String entityName){
if (entityName == null) {
return null;
}
if (entityName.equals("长方形")) {
return new Rectangle();
}else if (entityName.equals("正方形")) {
return new Square();
}else if (entityName.equals("圆形")) {
return new Circular();
}
return null;
}
}
4.测试
public static void main(String[] args) {
FactoryPattern factoryPattern = new FactoryPattern();
Shape shape = factoryPattern.getShape("长方形");
shape.draw();
Shape shape2 = factoryPattern.getShape("正方形");
shape2.draw();
Shape shape3 = factoryPattern.getShape("圆形");
shape3.draw();
}
输出结果
我是一个长方形
我是一个正方形
我是一个圆形