当前位置: 首页 > news >正文

做网站 多少钱直接打开百度

做网站 多少钱,直接打开百度,wordpress 空行,做外贸自己建网站装饰器模式是一种结构型设计模式,它允许动态地将责任附加到对象上。装饰器模式是通过创建一个包装对象,也就是装饰器,来包裹真实对象,从而实现对真实对象的功能增强。装饰器模式可以在不修改原有对象的情况下,动态地添…

装饰器模式是一种结构型设计模式,它允许动态地将责任附加到对象上。装饰器模式是通过创建一个包装对象,也就是装饰器,来包裹真实对象,从而实现对真实对象的功能增强。装饰器模式可以在不修改原有对象的情况下,动态地添加功能。

装饰器模式通常由以下几个组件组成:

1.Component(组件接口):定义了一个对象接口,可以给这些对象动态地添加职责。

2.ConcreteComponent(具体组件):实现了组件接口,是被装饰的对象。

3.Decorator(装饰器抽象类):持有一个指向组件对象的引用,并实现了组件接口。通常是一个抽象类,用于定义装饰器的基本行为。

4.ConcreteDecorator(具体装饰器):扩展了装饰器抽象类,实现了具体的装饰功能。

开始上代码
首先我们定义一个咖啡

// 组件接口
interface Coffee {double cost();String getDescription();
}

咖啡分很多种类,我们先来一个浓缩咖啡

// 具体组件 - 浓缩咖啡
class Espresso implements Coffee {@Overridepublic double cost() {return 1.5;}@Overridepublic String getDescription() {return "Espresso";}
}

然后我觉得浓缩咖啡有点苦,所以我想加点糖和牛奶
所以这里我们要开始上装饰器了

// 装饰器抽象类
abstract class CoffeeDecorator implements Coffee {protected Coffee coffee;public CoffeeDecorator(Coffee coffee) {this.coffee = coffee;}@Overridepublic double cost() {return coffee.cost();}@Overridepublic String getDescription() {return coffee.getDescription();}
}

加奶的装饰器

// 具体装饰器 - 加牛奶
class Milk extends CoffeeDecorator {public Milk(Coffee coffee) {super(coffee);}@Overridepublic double cost() {return super.cost() + 0.5;}@Overridepublic String getDescription() {return super.getDescription() + ", Milk";}
}

加糖的装饰器

// 具体装饰器 - 加糖
class Sugar extends CoffeeDecorator {public Sugar(Coffee coffee) {super(coffee);}@Overridepublic double cost() {return super.cost() + 0.2;}@Overridepublic String getDescription() {return super.getDescription() + ", Sugar";}
}

然后测试一下

public class Test {public static void main(String[] args) {// 点一杯浓缩咖啡Coffee espresso = new Espresso();System.out.println("Espresso: " + espresso.getDescription() + " - Cost: $" + espresso.cost());// 加牛奶Coffee espressoWithMilk = new Milk(espresso);System.out.println("Espresso with Milk: " + espressoWithMilk.getDescription() + " - Cost: $" + espressoWithMilk.cost());// 加糖Coffee espressoWithSugar = new Sugar(espresso);System.out.println("Espresso with Sugar: " + espressoWithSugar.getDescription() + " - Cost: $" + espressoWithSugar.cost());// 加牛奶和糖Coffee espressoWithMilkAndSugar = new Sugar(new Milk(espresso));System.out.println("Espresso with Milk and Sugar: " + espressoWithMilkAndSugar.getDescription() + " - Cost: $" + espressoWithMilkAndSugar.cost());}
}

运行结果

在这里插入图片描述

可以发现这个模式很好理解,看起来也比较实用的样子

http://www.hkea.cn/news/8711/

相关文章:

  • 北京知名网站网络销售平台怎么做
  • 邢台网站建设包括哪些网络推广有哪些
  • 做网站工作室找客户难每日新闻摘抄10条
  • 成都网站建设平台申京效率值联盟第一
  • 遂宁网站建设公司哪家好宣传推广文案
  • 富蕴县建设局网站泰安seo培训
  • 日本logo设计网站seo新方法
  • 南山企业网站建设直播代运营公司
  • 淘宝联盟的网站怎么做的策划方案网站
  • 自己怎么做网站视频赚钱深圳做网站的公司
  • 做网站难度大吗如何优化网站排名
  • 免费cms建站临沂百度推广多少钱
  • 电大的网站界面ui设计训练怎么做网络推广公司十大排名
  • 网站根目录有哪些弹窗广告最多的网站
  • 山西省网站建设网站优化外包公司
  • 制作b2c购物网站以网络营销为主题的论文
  • 电子商务网站建设文案站长工具精华
  • 怎么在网上做彩票网站谷歌seo推广
  • 苏州做网站外包的公司有哪些防止恶意点击软件管用吗
  • 建设品牌型网站制作免费发广告的平台
  • 网站建设中翻译google下载官网
  • 重庆公司免费网站建设5118大数据平台官网
  • 平顶山有做网站的公司代刷网站推广快速
  • 案例学 网页设计与网站建设百度关键词刷排名软件
  • 培训机构网站建设方案公司管理培训课程大全
  • 手机怎么制作网站教程视频教程网站seo策划方案
  • 建站能赚钱吗企业软文代写
  • 手机做网站视频超云seo优化
  • 龙华网站优化赚钱软件
  • 大中型网站开发价格青岛网站制作设计