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)
      • 提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。
      • 利用反射,通过配置文件设置参数和获取配置文件参数。
  • 相关阅读:
    Git命令大全
    window系统查看端口被哪个进程占用了
    字体大小自适应纯css解决方案
    CSS3的rem设置字体大小
    javascript同名变量
    西部数码云服务器手记
    十年,站酷已成设计论坛霸主,博客园却成无兵之将
    PHP的性能大坑--strtotime函数
    csv表格处理(上)-- JS 与 PHP 协作导入导出
    致互联网--那些我浅尝则止的昙花
  • 原文地址:https://www.cnblogs.com/fatRabbit-/p/10193089.html
Copyright © 2011-2022 走看看