创造型模式-工厂模式
介绍
定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
语言不够,代码来凑
- 创建一个接口 - 1 
 2
 3- public interface Shape { 
 void draw();
 }
- 创建实现接口的实体类 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24- public class Rectangle implements Shape { 
 
 
 public void draw() {
 System.out.println("Inside Rectangle::draw() method.");
 }
 }
 public class Square implements Shape {
 
 
 public void draw() {
 System.out.println("Inside Square::draw() method.");
 }
 }
 public class Circle implements Shape {
 
 
 public void draw() {
 System.out.println("Inside Circle::draw() method.");
 }
 }
- 创建一个工厂,生成需要的对象* - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17- public class ShapeFactory { 
 
 //使用 getShape 方法获取形状类型的对象
 public Shape getShape(String shapeType){
 if(shapeType == null){
 return null;
 }
 if(shapeType.equalsIgnoreCase("CIRCLE")){
 return new Circle();
 } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
 return new Rectangle();
 } else if(shapeType.equalsIgnoreCase("SQUARE")){
 return new Square();
 }
 return null;
 }
 }
- 使用工厂类,获得对象 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24- public class FactoryPatternDemo { 
 
 public static void main(String[] args) {
 ShapeFactory shapeFactory = new ShapeFactory();
 
 //获取 Circle 的对象,并调用它的 draw 方法
 Shape shape1 = shapeFactory.getShape("CIRCLE");
 
 //调用 Circle 的 draw 方法
 shape1.draw();
 
 //获取 Rectangle 的对象,并调用它的 draw 方法
 Shape shape2 = shapeFactory.getShape("RECTANGLE");
 
 //调用 Rectangle 的 draw 方法
 shape2.draw();
 
 //获取 Square 的对象,并调用它的 draw 方法
 Shape shape3 = shapeFactory.getShape("SQUARE");
 
 //调用 Square 的 draw 方法
 shape3.draw();
 }
 }
- 输出结果 - 1 
 2
 3- Inside Circle::draw() method. 
 Inside Rectangle::draw() method.
 Inside Square::draw() method.
总结
工厂模式:根据外界给定的信息,决定究竟应该创建那个具体类的对象
