本文共 2132 字,大约阅读时间需要 7 分钟。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。把new对象的工作交给工厂类去执行。
1.先定义一个接口package com.yecc.suanfa.factory;/** * Created by yecc on 2020/11/27 15:24 */public interface Shape { void draw();}
2.三个类继承接口
package com.yecc.suanfa.factory;/** * Created by yecc on 2020/11/27 15:24 */public class Rectangle implements Shape{ @Override public void draw() { System.out.println("Inside Rectangle::draw() method."); }}
package com.yecc.suanfa.factory;/** * Created by yecc on 2020/11/27 15:25 */public class Circle implements Shape { @Override public void draw() { System.out.println("Inside Circle::draw() method."); }}
package com.yecc.suanfa.factory;/** * Created by yecc on 2020/11/27 15:25 */public class Square implements Shape { @Override public void draw() { System.out.println("Inside Square::draw() method."); }}
3.创建工厂:
package com.yecc.suanfa.factory;/** * Created by yecc on 2020/11/27 15:26 */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; }}
4.测试:
package com.yecc.suanfa.factory;/** * Created by yecc on 2020/11/27 15:26 */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(); }}
转载地址:http://dnyen.baihongyu.com/