频道栏目
首页 > 程序开发 > 软件开发 > Java > 正文
设计模式之简单工厂模式
2014-03-11 11:37:58         来源:设计模式之简单工厂模式  
收藏   我要投稿

看完书,用一句话来说简单工厂模式就是通过对类封装,继承,多态使用,来实现业务和界面分离。实现程序的可维护性(修改),可拓展性(添加),可重用性(保留),灵活性(移动). 只是解决对象创建问题

下面是实现计算机简单加减乘除运算来实现的简单工厂模式。

//运算类   实现业务逻辑和界面逻辑的分离  从而容易维护和拓展
    class Operation
    {
        private double _numberA = 0;
        private double _numberB = 0;
        public double NumberA {
            get { return _numberA; }
            set { _numberA = value; }
        }
        public double NumberB {
            get { return _numberB; }
            set { _numberB = value; }
        }
        public virtual double getResult() {
            double result = 0;
            return result;
        }
    }
    //加法运算类
    class OperationAdd : Operation
    {
        public override double getResult()
        {
            double result = 0;
            result = NumberA + NumberB;
            return result;
        }

    }

    //减法运算类
    class OperationSub : Operation 
    {
        public override double getResult()
        {
            double result = 0;
            result = NumberA - NumberB;
            return result;

        }
    }

    //乘法运算类
    class OperationMul : Operation
    {
        public override double getResult()
        {
            double result = 0;
            result = NumberA * NumberB;
            return result;
        }
    }

    //除法运算类
    class OperationDiv : Operation
    {
        public override double getResult()
        {
            double result = 0;
            if (NumberB == 0) {
                throw new Exception("除数不能为零");
            }
            result = NumberA / NumberB;
            return result;

        }
    }

工厂

  //工厂主要是创建不能类对象
    class OperationFaction
    {
        public static Operation createOperate(string operate) {
            Operation oper = null;
            switch (operate)
            {//将子类对象赋给父类,父类可以直接调用子类相应方法  通过重载父类方法实现
                case "+": oper = new OperationAdd(); 
                    break;
                case "-": oper = new OperationSub();
                    break;
                case "*": oper = new OperationMul();
                    break;
                case "/": oper = new OperationDiv();
                    break;
            }
            return oper;
        }
    }

主函数:

        static void Main(string[] args)
        { //只是实现调用
            Operation oper;
            oper = OperationFaction.createOperate("+");
            oper.NumberA = 1;
            oper.NumberB = 2;
            double result = oper.getResult();
            Console.WriteLine(result);
            Console.ReadLine();
        }


点击复制链接 与好友分享!回本站首页
上一篇:开源 免费 java CMS - FreeCMS1.7 站点管理
下一篇:最大值和最小值的操作处理
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站