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)
      • 提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。
      • 利用反射,通过配置文件设置参数和获取配置文件参数。
  • 相关阅读:
    107. 二叉树的层次遍历 II
    c#、ASP.NET core 基础模块之一:linq(原创)
    sql 查询 一张表里面的数据 在另一张表中是否存在 和 比对两个集合中的差集和交集(原创)
    winform从table1获取需要的数据转存储到table2中
    Winform学习之随笔一:Log4net
    VS中让用户选择路径
    HttpWebRequest中GetResponse或者说GetRequestStream偶尔超时,或者是各种操作超时造成的假死的一些解决方案
    使用JSON JavaScriptSerializer进行反序列化和序列化时报错,字符的长度超出了MaxJsonLength的长度
    c#中常用集合类和集合接口之接口系列【转】
    c#中常用集合类和集合接口之集合类系列【转】
  • 原文地址:https://www.cnblogs.com/fatRabbit-/p/10193089.html
Copyright © 2011-2022 走看看