zoukankan      html  css  js  c++  java
  • 浅谈Java设计模式——工厂方法模式(FactoryMethod)

    一、概述

            定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。

    二、使用场景

    1.当一个类不知道它所必须创建的对象的类的时候。 
    2.当一个类希望由它的子类来指定它所创建的对象的时候。
    3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

    三、类图

    四、实现代码

    Operation抽象类:

    /**
     * 运算超类
     */
    public abstract class Operation {
        public abstract double getResult(double t1, double t2);
    }

    OperationAdd类:

    /**
     * 加法操作
     */
    public class OperationAdd extends Operation {
        @Override
        public double getResult(double t1, double t2) {
            return t1 + t2;
        }
    }

    OperationSubtraction类:

    /**
     * 减法操作
     */
    public class OperationSubtraction extends Operation {
        @Override
        public double getResult(double t1, double t2) {
            return t1 - t2;
        }
    }


    Factory接口:

    /**
     * 工厂接口
     */
    public interface Factory {
        public Operation createOperation();
    }

    AddFactory类:

    public class AddFactory implements Factory {
        @Override
        public Operation createOperation() {
            return new OperationAdd();
        }
    }

    SubtractionFactory类:

    public class SubtractionFactory implements Factory {
        @Override
        public Operation createOperation() {
            return new OperationSubtraction();
        }
    }


    客户端代码:

    public class Client {
        public static void main(String[] args) {
            Factory factory = new AddFactory();
            Operation operation = factory.createOperation();
            double result = operation.getResult(2, 2);
            System.out.println("add operation result: " + result);
    
            Factory factory1 = new SubtractionFactory();
            Operation operation1 = factory1.createOperation();
            double result1 = operation1.getResult(9, 3);
            System.out.println("substractionFactory operation result: " + result1);
        }
    }
  • 相关阅读:
    受限玻尔兹曼机 视频
    android textview空格占位符以及一些其他占位符汇总
    几种常见的Preference总结
    Android著名开源库
    Android 常用开源库总结(持续更新)
    2019最新Android常用开源库总结(附带github链接)
    Android gradle用exclude排除引用包中的dependency引用
    Gradle3.0新指令api、provided、implementation等对比
    jar包下载网站
    mac环境下Android 反编译
  • 原文地址:https://www.cnblogs.com/IdealSpring/p/11871178.html
Copyright © 2011-2022 走看看