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

怀宁网站建设计算机培训机构

怀宁网站建设,计算机培训机构,网站日志分析怎么做,做网站云主机4.4 装饰模式 1.模式定义 不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。 2.模式结构 抽象构件角色 :定义一个抽象接口以规范准备接收附加责任的对象。客户端可以方便调用装饰类和被装饰类…

4.4 装饰模式

1.模式定义

不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。

2.模式结构

image-20241013161535947

抽象构件角色 :定义一个抽象接口以规范准备接收附加责任的对象。客户端可以方便调用装饰类和被装饰类。

具体构件角色 :实现抽象构件,通过装饰角色为其添加一些职责。

抽象装饰角色 : 继承或实现抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。

具体装饰角色 :实现抽象装饰的相关方法,并给具体构件对象添加附加的责任。

3.模式原理

在不改变对象本身的基础之上,给对象添加或删除行为,往往可以通过继承机制或者是关联机制实现

  • 继承机制:通过子类对父类的继承,重写或添加新的方法来扩展类
  • 关联机制:将一个类的对象嵌入另一个类的对象之中,进而在另一个类中扩展其行为(通过递归嵌套实现多层装饰)

4.代码模板

抽象装饰类

public class Decorator implements Component {//关联抽象构建private Component component;//构造注入具体构建public Decorator(Component component) {this.component = component;}@Overridepublic void operation() {component.operation();}
}

具体装饰类

public class ConcreteDecorator extends Decorator{public ConcreteDecorator(Component component) {super(component);}public void operation() {super.operation();addBehavior();}private void addBehavior() {//新增方法}
}

5.案例分析

image-20241013173014212

public interface Call {public void callMusic();
}public class Phone implements Call {public Phone() {System.out.println("普通手机");}@Overridepublic void callMusic() {System.out.println("来电话了,手机发出响声");}
}public class Decorator implements Call{private Call call;public Decorator(Call call) {this.call = call;}public void setCall(Call call) {this.call = call;}@Overridepublic void callMusic() {System.out.println("来电话了,手机发出响声");}
}public class JarPhone extends Decorator {public JarPhone(Call call) {super(call);System.out.println("振动手机");}public void jar() {super.callMusic();System.out.println("振动~~~");}
}public class LightPhone extends Decorator{public LightPhone(Call call) {super(call);System.out.println("闪光手机");}public void light() {super.callMusic();System.out.println("闪光~~~");}
}public class Main {public static void main(String[] args) {Phone phone = new Phone();System.out.println("电话来了");phone.callMusic();System.out.println("————————————————");JarPhone jarPhone = new JarPhone(phone);System.out.println("电话来了");jarPhone.jar();System.out.println("————————————————");LightPhone lightPhone = new LightPhone(phone);System.out.println("电话来了");lightPhone.light();System.out.println("————————————————");//将闪光手机改装成可以振动且闪光的手机System.out.println("组装手机:");lightPhone.light();jarPhone.setCall(lightPhone);jarPhone.jar();}
}

6.模式优缺点

image-20241013175750571

7.模式使用场景

image-20241013175846869

8.模式应用

  • IO流中使用:InputStream和OutputStream中只提供了简单的读写操作,通过装饰模式可以得到具有文件输入输出的FileInputStream等
  • javax.swing中也有大量使用
http://www.ds6.com.cn/news/80236.html

相关文章:

  • 自己做的个人网站 csdn安徽网站关键词优化
  • 城建亚泰建设集团网站促销活动推广方案
  • 建立个人网站的成本技术培训平台
  • 怎么给网站图片加alt爱站网关键词挖掘机
  • 莱西网站建设seo公司培训课程
  • 烟台建网站公司代运营公司怎么找客户
  • 网站搭建课程标准磐石网站seo
  • 和拓者设计吧类似的网站软文代写多少钱一篇
  • 深圳好点的网站建设公司站内营销推广途径
  • 桂平网站建设百度网址大全 简单版
  • 个人网站 名称短视频推广公司
  • 什么网站做的好百度竞价排名商业模式
  • 优化seo网站西安市场调研报告的基本框架
  • 国家企业信用信息官网新的seo网站优化排名 排名
  • 在本地搭建多个网站推广项目的平台
  • 武城网站建设费用官网seo是什么意思
  • 优酷的网站头怎么做的关键词首页排名优化价格
  • 无锡科技网站建设重庆网站seo费用
  • 发生太多重定位wordpressseo诊断分析工具
  • 网站制作全包价格百度怎样发布信息
  • 网站关键词添加后的后果怎么接广告赚钱
  • 城乡建设厅网站首页今日头条淄博新闻
  • 武汉大学人民医院汤志刚百度优化怎么做
  • 网站开发应用短信seo少女
  • 专门做设计的网站广告推送平台
  • 网站营销推广如何做今日最新抗疫数据
  • 成功的营销案例及分析深圳债务优化公司
  • WordPress做漫画网站电商营销
  • 北京到安阳防疫政策杭州网站建设 seo
  • 好便宜建站拉新推广怎么找渠道