• 粗谈设计模式


    这两天在看设计模式,想在这边随便写点.
    模式一.装饰者模式 Decorate
    书中举的一个例子,就是卖咖啡的问题.
    首先coffee 有好多种,摩卡,蓝山等等.
    我们会定义一个基类class coffee
    {
        decimal cost();
    }
    然后派生两个类
    class mocha : coffee
    {
        decimal cost();
    }
    class blue : coffee
    {
        decimal cost();
    }

    这个时候顾客会有要求,我要加三份奶,两份糖,当然starbucks是免费的.
    很自然我们会定义两个类milk 和sugar
    class milk
    {
        decimal cost();{return 1.00;}
    }

    class sugar
    {
        decimal cost();{return 1.00;}
    }

    void main() //首先我们不考虑是mocha 还是blue,假定是mocha
    {
        decimal(Mocha mocha,int milknum,int sugarnum)
        {
            Sugar su = new Sugar();
            Milk mi = new Milk();
            return mocha.cost() + milknum * mi.cost() + sugarnum * su.cost();
        }
    }

    接下来是用装饰者模式来实现
    让每个辅料继承coffee
    class Milk :coffee
    {
        private coffee _coffee;
        public Milk(coffee coffee)

        {this._coffee = coffee;}
        decimal cost()
        {
            return 1.00 + _coffee.cost();
        }
    }
    sugar也是这样修改
    然后我们看main
    void main()
    {
        Coffee coffee = new Mocha();
        coffee = new sugar(coffee);
        coffee = new sugar(coffee);
        coffee = new sugar(coffee);
        coffee = new milk(coffee);
    coffee = new milk(coffee);
    cost(coffee);
    }
    decimal cost(coffee _coffee)
    {
        return _coffee.cost();
    }
    我发现在计算费用方面是方便了,但是对于,几份糖,几份奶还是不是很方便.

    Always.Net
  • 相关阅读:
    js-格式化数字保留两位小数-带千分符
    java-byte[]图片在页面展示
    bootstrap-fileupload-上传文件控件
    css-让div永远在最底部
    hibernate-DetachedCriteria实现关联表条件复查
    eclipse-搭建maven的war项目集合spring注解方式
    spring-注解
    eclipse-mvn打包跳过junit测试类
    Spring-注解控件介绍
    java-读取类中的属性名称和值
  • 原文地址:https://www.cnblogs.com/alwaysdotnet/p/1205536.html
Copyright © 2020-2023  润新知