咖啡

java设计模式-装饰者模式

百般思念 提交于 2020-02-09 05:27:05
这个模式花费了挺长时间,开始有点难理解,其实就是 定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活。 设计初衷:通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的。 要点: 装饰者与被装饰者拥有共同的超类,继承的目的是继承类型,而不是行为 以点咖啡为例: 我们在点咖啡的时候通常会有这样的情况: 点了不同的咖啡会有不同的价格,此时我们需要一个咖啡的基类,不同的咖啡重写基类的cost()方法来实现自己的价格,但有时候我们点咖啡的时候会需要添加一些额外的调料,这个时候价格就变了,而这些额外的调料现在又是不确定的,如果提供过多的set()和get()方法来进行调料的添加又会出现新的问题,如果后续推出茶,汽水之类的饮料时,我们从基类那里继承过来很多没用的set和get方法 所以在这里我们采用不一样的做法:以饮料为主体,然后在运行时以调料来“装饰”饮料,比如说顾客想要 加摩卡和加奶泡的深培咖啡,那么,要做的是: 1:拿一个深培咖啡对象(DarkRoast) 2:以摩卡(Mocha)对象装饰它 3:以奶泡(Whip)对象装饰它 4:调用cost()方法,并依赖委托

设计模式 --- 装饰器模式

别等时光非礼了梦想. 提交于 2020-02-07 05:29:53
装饰器模式能够在不改 变对象自身的基础上,在程序运行期间给对象 动态地添加职责。遵循开闭原则(应该对于扩展是开放的,对修改是关闭的,即实体应当通过扩展实现变化,而不是修改代码实现变化),利用继承和组合的方式解耦对象间的关系。 例子 以常见的案列咖啡为例。在不考虑设计模式的时候,按照传统的思路,我们会写一个父类表示纯咖啡,如果不能满足需要,就在添加一个加牛奶的咖啡的类去继承咖啡父类,如果还想要加糖,那么在创建一个加糖的类继承父类,这样虽然解决了问题,但是子类膨胀,不利于管理。 以装饰器模式进行开发的话,需要先定一个顶层的接口,对咖啡的行为进行规范 public interface Coffee { String getName(); double getPrice(); } 由于咖啡中需要加各种材料,独把它抽象出来,将其设计成一个抽象类,让子类去添加材料。 public abstract class CoffeeAbstractor implements Coffee { private Coffee coffee; public CoffeeAbstractor(Coffee coffee) { this.coffee = coffee; } @Override public String getName() { return coffee.getName(); }

Coffee Break(贪心+STL)

痴心易碎 提交于 2020-02-03 12:16:14
Recently Monocarp got a job. His working day lasts exactly mm minutes. During work, Monocarp wants to drink coffee at certain moments: there are nn minutes a1,a2,…,ana1,a2,…,an , when he is able and willing to take a coffee break (for the sake of simplicity let's consider that each coffee break lasts exactly one minute). However, Monocarp's boss doesn't like when Monocarp takes his coffee breaks too often. So for the given coffee break that is going to be on minute aiai , Monocarp must choose the day in which he will drink coffee during the said minute, so that every day at least dd minutes

设计模式3——装饰者模式

左心房为你撑大大i 提交于 2020-02-03 08:59:34
定义:动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更加弹性的解决方案。 1 引例_咖啡订单系统 1.1 最初设计。 如图1,首先创建一个Bevarage(饮料)的抽象类,店内所有的咖啡都继承这个类。description是成员变量,由子类设置,描述咖啡使用。 getDescription() 就是返回这个描述。 cost() 方法是抽象方法,由子类实现,计算价格使用。 最开始咖啡就有如下4个(对咖啡不太了解,中文名字错了不要在意):DarkRoast(超优深焙咖啡),Espresso(浓缩咖啡),Decaf(低卡咖啡),HouseBlend(混合咖啡) 但客人要求在咖啡里添加调料:Milk(奶),Soy(豆浆),Mocha(摩卡),每种调料都有单独的价钱,所以设计上又添加了这些,如图2。 这里我们可以看出问题,图2中只是列出了三种组合,我们可以想一下,这种组合是由很多种的,现在是4款咖啡,3种调料,在考虑到以后,可定会推出更多的咖啡和各种调料。这样维护起来,类会爆炸的,而且有的人还喜欢double份的Mocha,这样算的话类就会无穷无尽,而且物价是波动的,你还会修改价格,这样维护起来会死人的。 1.2 进一步改进 如图3,这次将调料加入 Bevarage 中的成员变量中,并加入相应的has和set方法, cost() 方法现在提供实现,计算出调料的价格

二分的一道题

徘徊边缘 提交于 2020-02-02 02:10:47
Examples 输入 5 8 2 3 1 1 2 输出 4 输入 7 10 1 3 4 2 1 4 2 输出 2 输入 5 15 5 5 5 5 5 输出 1 输入 5 16 5 5 5 5 5 输出 2 输入 5 26 5 5 5 5 5 输出 -1 Note 在第一个样例中,泰泰学长第一天可以喝第四杯咖啡(写 1 页), 在第二天喝第一杯喝第二杯(写 2 + (3 - 1) = 4 页), 第三天喝第五杯咖啡(写 2 页) 同时在第四天喝第三杯咖啡(写 1 页) 所以答案是 4 . 显然没有其他方案能够在三天内写完或者用时更少. 在第一个样例中,泰泰学长第一天可以喝第三、四、二杯咖啡(写 4 + (2 - 1) + (3 - 2) = 6 页), 在第二天喝第六杯(写 4 页)所以答案是 2 . 显然泰泰学长不能够在一天写完. 在第三个样例中,泰泰学长第一天可以喝完所有的咖啡(写 5 + (5 - 1) + (5 - 2) + (5 - 3) + (5 - 4) = 15 页). 在第四个样例中,泰泰学长不应该第一天可以喝完所有的咖啡,应该第二天喝其中的一杯咖啡. 所以在第一天泰泰学长写 5 + (5 - 1) + (5 - 2) + (5 - 3) = 14 页 第二天写 5 页. 在第五个样例中,泰泰学长就算是一天喝一杯咖啡也无法完成课程作业, 所以答案是 -1 .

从瑞幸咖啡看产品运营的三个关键点

自古美人都是妖i 提交于 2020-01-25 03:51:55
文|木子李,来源:公关之家 前几天,看到一则报告,说的是瑞幸咖啡已经成功超越星巴克,成为中国地区门店数量最多的咖啡品牌。从2018年1月份瑞幸咖啡的面世,到2019年5月份的上市,再到今年12月,门店数超过星巴克成为中国地区门店数最多的咖啡品牌,瑞幸咖啡的速度令人叹为观止。 从瑞幸咖啡的运营来看,我觉得有三个关键点值得我们注意与学习。 一、试运营 瑞幸咖啡在投入运营之前,先在北京开了三家店,分别是:联想桥店、望京SOHO店和银河SOHO店,三个店分别代表着不同的场景,有着不一样的优势和劣势。其中,联想桥店开放给内部用户,作用是观察用户的购买频次、对价格的接受区间、复购率,并对用户人群细分,找出用户基本特征;望京SOHO店有着较大的人流量,目的是用来测试裂变营销以及效果;银河SOHO店人流量相对较偏,人流量相对较少,用来测试微信LBS门店推广效果。 产品问世之初在没明确自己定位和商业模式之前,先做出一个MVP以用来验证自己的商业计划和模式是最好的方式。 明确自己的产品面向的用户群体 通过观察三家店,可以很直观的了解到用户的基本特征,比如: 年龄上:以25-34岁的用户为主; 学历上:大部分用户是本科; 收入上:20K以上的用户占比最多; 职业上:大部分是白领; 瑞幸咖啡通过明确自己的用户群体,有针对性的进行广告投放,如在明星的选择上,并没有选择流量明星

影响需求的三大变量(张五常)

故事扮演 提交于 2020-01-22 22:53:43
在这个准则下,我认为如下的三项「不变」与「变」 的界定是「安全」的——安全者,不被事实推翻也。 (一) 凡是直接影响价格的其它因素皆可变 。这包括所有供应变动引起的价格变动的因素了。农业丰收(供应增加,价格下降);政府减少土地供应(楼宇 价格上升)。这些因素都是可变的。 (二) 凡是直接影响需求量的其它因素皆不可变。 这包括金钱收入(money income)及所有价格不变或供应不变而需求量也会变的因素了。上文提到的连天 大雨与雨伞需求量就是例子。飞机失事天天有,机票 售量下降;高行健获诺贝尔文学奖,作品销量上升等 等。这类因素(变量)不可变。 (三) 价格转变会导致需求量的转变,但价格的 转变还可能导致其它因素的转变,而这些「其它因素」 可能再影响需求量。 这些在「中间」的、间接地影响 需求量的因素(变量)皆可变。举一个例,咖啡的价格下降会导致咖啡本身的需求量增加,但同时也会引起糖的需求增加,这后者的增加会导致糖的价格上升, 糖的价格上升会导致咖啡的需求减少,而这减少会导 致咖啡的需求量减少。在这里,糖的需求与价格是「中 间」因素,可变。那是说,咖啡的价格下降导致其需 求量增加,是需求定律,而在二者之间的所有可能影 响咖啡需求量的其它因素(变量)皆可变。 来源: CSDN 作者: LSRW听说读写 链接: https://blog.csdn.net/Ture010Love

Kotlin设计模式实现之装饰者模式(Decorator)

你离开我真会死。 提交于 2020-01-02 09:39:59
前言 今天是2020年的第一天,在这里祝大家元旦快乐!之前用 kotlin实现了策略模式 ,文中写到要多写几篇文章来加深以下对设计模式的理解。那么今天要写的看题目应该就知道了:装饰者模式(也叫装饰模式)。下面是装饰者模式的定义: 装饰者模式(Decorator) :在不改变对象自身的基础上,动态地给一个对象添加一些额外的职责。与继承相比,装饰者是一种更轻便灵活的做法。若要扩展功能,装饰者提供了比继承更有弹性的替代方法。 故事场景 小星刚毕业,到一家公司实习。今天来到公司后,一如既往地开始编写它的增删改查。 刚刚坐下打开电脑,技术锦鲤走了过来,小星内心开始发牢骚(锦鲤来干啥,每回它来都没好事)。锦鲤告诉小星,公司想要编写一个卖咖啡的系统,有不同种类的咖啡,需要能计算出咖啡的钱和区分咖啡的类别。 小星:没问题,很简单。 十分钟后,小星写出了它的第一版代码: 咖啡的基类: abstract class Beverage(var description: String = "Unknown Beverage") { //描述 open fun getDescriptions():String{ return description } //价钱 abstract fun cost():Double } 其他咖啡(子类): /** * 深度烘焙咖啡(星巴克) * * @author

如果你像咖啡,当逆境到来

我与影子孤独终老i 提交于 2019-12-22 10:26:50
女儿向父亲抱怨生命是如何痛苦、无助,她是多么想要快乐地走下去,但是她已失去方向。 父亲二话不说,拉起女儿的手,走进厨房,烧了三锅水,水滚后在第一个锅子放入萝卜,第二个锅子放入蛋,第三个锅子放入咖啡。父亲示意女儿不要说话,看着滚烫的水以炽热的温度烧着萝卜、蛋和咖啡。 过后,父亲要女儿摸摸经过沸水烧煮的萝卜,萝卜已被煮得软烂;敲碎薄硬的蛋壳,细心观察;然后尝尝咖啡。女儿喝着咖啡,闻到浓浓的香味。她问,爸,这是什么意思? 父亲解释,这三样东西面对相同的逆境,也就是滚烫的水,反应却各不相同,原本粗硬、坚实的萝卜,在滚水中变软了;蛋原本非常脆弱,经过滚水沸腾,却变硬了;而粉末似的咖啡在滚烫的热水中竟然改变了水。 父亲接着说,「当逆境来时,你做何反应?你看似坚强的萝卜,痛苦与逆境来时却变得软弱,失去力量。或者你原本是一颗蛋,有着柔顺易变的心,却在经历死亡、分离、困境后,变得僵硬顽强。或者你就像咖啡,将那带来痛苦的沸水变成了美味的咖啡,愈沸腾愈美味。如果你像咖啡,当逆境到来,就能将外在的一切转变得更加令人欢喜。」 来源: https://www.cnblogs.com/charles/archive/2005/11/21/281446.html

胡萝卜,是鸡蛋,还是咖啡豆

耗尽温柔 提交于 2019-12-22 10:26:24
一个女儿对父亲抱怨她的生活,抱怨事事都那么艰难。她不知该如何应付生活,想要自暴自弃了。她已厌倦抗争和奋斗,好像一个问题刚解决,新的问题就又出现了。 她的父亲是位厨师,他把她带进厨房。他先往三只锅里倒入一些水,然后把它们放在旺火上烧。不久锅里的水烧开了。他往一只锅里放些胡萝卜,第二只锅里放入鸡蛋,最后一只锅里放入碾成粉末状的咖啡豆。他将它们侵入开水中煮,一句话也没有说。 女儿咂咂嘴,不耐烦地等待着,纳闷父亲在做什么。大约20分钟后,他把火闭了,把胡萝卜捞出来放入一个碗内,把鸡蛋捞出来放入另一个碗内,然后又把咖啡舀到一个杯子里。做完这些后,他才转过身问女儿,"亲爱的,你看见什么了?""胡萝卜、鸡蛋、咖啡",她回答。 他让她靠近些并让她用手摸摸胡萝卜。她摸了摸,注意到他们变软了。父亲又让女儿拿一只鸡蛋并打破它。将壳剥掉后,他看到了是只煮熟的鸡蛋。最后,他让她喝了咖啡。品尝到香浓的咖啡,女儿笑了。她怯生问到:"父亲,这意味着什么?" 他解释说,这三样东西面临同样的逆境——煮沸的开水,但其反应各不相同。胡萝卜入锅之前是强壮的,结实的,毫不示弱;但进入开水之后,它变软了,变弱了。鸡蛋原来是易碎的,它薄薄的外壳保护着它呈液体的内脏。但是经开水一煮,它的内脏变硬了。而粉状咖啡豆则很独特,进入沸水之后,它们倒改变了水。"哪个是你呢?"他问女儿。"当逆境找上门来时,你该如何反应?你是胡萝卜,是鸡蛋