zoukankan      html  css  js  c++  java
  • 工厂方法模式

      • /**
        *
        */
        public abstract class OperationBean {
            private double _numberA = 0;//字段,即属性
            private double _numberB = 0;
        
        
        
            public double get_numberB() {
                return _numberB;
            }
        
            public void set_numberB(double _numberB) {
                this._numberB = _numberB;
            }
        
            public double get_numberA() {
                return _numberA;
            }
        
            public void set_numberA(double _numberA) {
                this._numberA = _numberA;
            }
            public  abstract  double GetResult();
        }
        
        
        public class OperationAdd extends OperationBean {
            @Override
            public double GetResult() {
                double result = 0;
                result = get_numberA() + get_numberB();
                return result;
            }
        }
        
        
        /**
         * 
         */
        public class OperationSub extends OperationBean {
            @Override
            public double GetResult() {
                double result = 0;
                result = get_numberA() - get_numberB();
                return result;
            }
        }
        
        
        /**
         * 
         */
        public class OperationMul extends OperationBean {
            @Override
            public double GetResult() {
                double result = 0;
                result = get_numberA() * get_numberB();
                return result;
            }
        }
        
        
        /**
         * 
         */
        public class OperationDiv extends OperationBean {
            @Override
            public double GetResult() {
                double result = 0;
                result = get_numberA() / get_numberB();
                return result;
            }
        }
        
        /**
         * 工厂类
         */
        public class OperationFactory{
        
            public static OperationBean createOperation(String operate){
                OperationBean operation = null;
                switch (operate){
                    case "+":
                        operation =  new OperationAdd();
                        break;
                    case "-":
                        operation =  new OperationSub();
                        break;
                    case "*":
                        operation =  new OperationMul();
                        break;
                    case "/":
                        operation =  new OperationSub();
                        break;
                }
                return operation;
            }
        
        
        }
        
        
        
        /**
         * 客户端代码
         */
        public class TestUtil {
        
            public static void main(String[] args) {
                
                OperationBean operation = OperationFactory.createOperation("+");
                operation.set_numberA(1);
                operation.set_numberB(2);
                System.out.println(operation.GetResult()+"");;
        
            }
        }
    • 工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例话延迟到了其子类。
      • /**
         * 工厂类
         */
        public abstract class BossOperationFactory {
        
            public abstract OperationBean createOperation();
        }
        
        
        /**
         * 加法工厂
         */
        public class AddFactory extends BossOperationFactory {
            @Override
            public OperationBean createOperation() {
                return new OperationAdd();
            }
        }
        
        /**
         * 减法工厂
         */
        public class SubFactory extends BossOperationFactory {
            @Override
            public OperationBean createOperation() {
                return new OperationSub();
            }
        }
        
        /**
         * 乘法工厂
         */
        public class MulFactory extends BossOperationFactory {
            @Override
            public OperationBean createOperation() {
                return new OperationMul();
            }
        }
        
        
        /**
         * 除法工厂
         */
        public class DivFactory extends BossOperationFactory {
            @Override
            public OperationBean createOperation() {
                return new OperationDiv();
            }
        }
        
        
        /**
         * 客户端代码
         */
        public class TestUtil {
        
            public static void main(String[] args) {
             
                BossOperationFactory factory = new AddFactory();
                OperationBean operationBean = factory.createOperation();
                operationBean.set_numberA(1);
                operationBean.set_numberB(2);
                System.out.println(operationBean.GetResult()+"");
        
            }
        }
    • 抽象工厂模式(Abstract Factory)
      • 提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。
      • 利用反射,通过配置文件设置参数和获取配置文件参数。
  • 相关阅读:
    Hadoop学习笔记——配置文件
    Hive学习笔记——SerDe
    MapReduce中的OutputFormat
    Nginx 转发时的一个坑,运维居然让我背锅!!
    教你用 Netty 实现一个简单的 RPC!
    完整的支付系统整体架构!
    String 拼接一定会走 StringBuilder?
    腾讯牛逼!终于开源了自家的 Tencent JDK——Kona!!
    Java 数组转 List 的 3 种方式,哪种性能最牛?
    Spring Boot 2.4.0 发布,配置文件重大调整,不要乱升级!!
  • 原文地址:https://www.cnblogs.com/fatRabbit-/p/10193089.html
Copyright © 2011-2022 走看看