• 设计模式(1)---Factory Pattern


    针对的问题:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

    第一步:创建接口

    //创建一个接口
    public interface Shape {
        public abstract void drow();
    }

    第二步:创建接口的实现类

    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 {
    
       @Override
       public void draw() {
          System.out.println("Inside Circle::draw() method.");
       }
    }

    第三步:定义工程类

    public class ShapeFactory {
        public Shape getShape(String shapeType) {
            if (shapeType.equalsIgnoreCase("CIRCLE")) {
                return new Circle();
            } else if (shapeType.equalsIgnoreCase("RECTANGLE")) {
                return new Rectangle();
            } else if (shapeType.equalsIgnoreCase("SQUARE")) {
                return new Square();
            } else {
                return null;
            }
    
        }
    }

    第四步:编写测试类

    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();
       }
    }
  • 相关阅读:
    JAVA——汉诺塔
    JAVA与MySQL连接并显示、管理表格实例
    2019沈阳网选——模拟
    CodeforcesRound#553(Div. 2)(A-D题解)
    CodeforcesRound#551(Div. 2)(A-C题解)
    CodeforcesGlobalRound2(Div.2)ABCE题解
    EducationalCodeforcesRound62(Div. 2)(A-D题解)
    博客搬家
    文本分类基本流程
    卡方检验应用-特征选择
  • 原文地址:https://www.cnblogs.com/excellencesy/p/8576669.html
Copyright © 2020-2023  润新知