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)
      • 提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。
      • 利用反射,通过配置文件设置参数和获取配置文件参数。
  • 相关阅读:
    SNAT的作用是什么
    Maven命名规范收集
    Linux下Git命令中文显示乱码的问题解决:274232350256256346200273347273223
    HttpClient中文乱码问题排查
    Ubuntu 16.04通过NetworkManager(GUI)配置网桥
    HTML5 Video P2P技术研究(转)
    CentOS 6.9下KVM虚拟机快照创建、删除、恢复(转)
    CentOS 6.9下KVM虚拟机通过virt-clone克隆虚拟机(转)
    开源规则引擎 drools
    评估系统负载
  • 原文地址:https://www.cnblogs.com/fatRabbit-/p/10193089.html
Copyright © 2011-2022 走看看