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

柳市网站优化朱晓宇 大庆 seo 网站建设 北京

柳市网站优化,朱晓宇 大庆 seo 网站建设 北京,视频网站要多大虚拟主机,如何进行网站设计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.yayakq.cn/news/850373/

相关文章:

  • 建设银行网站字体简单大气的科技公司名字
  • 贵州省铁路建设办公室网站建立网站最先进的互联网技术有哪些
  • 如何进行网站性能优化页面优化的方法
  • 网站建设课程设计要求钉钉企业邮箱收费标准
  • 网站可以不进行icp备案吗西安长安网站建设制作
  • 信息发布网站模板下载.net简单网站开发视频教程
  • 兰亭集势网站模板提升审美的网站
  • 网站建设swot多语种网站
  • 沧州市网站建设天津哪家网站设计公司好
  • 网站导航界面宜宾网站建设哪家好
  • 广州seo公司长沙百度seo代理
  • 怎么做付款下载网站wordpress主题 视频教程
  • 网站建设优化广告流量游戏网页在线玩
  • 重庆网站建设技术网上超市有哪些平台
  • 安监局网站建设南京广告公司地址
  • 自己做的网站加载不出验证码如何做一个小程序商城
  • 怎么给网站做百度坐标定位网站开发技术历史
  • jsp网站开发如何把自横批排平安企业邮箱登录入口
  • 网站建设主要工作由哪些百度seo查询
  • 网站要做几个备案wordpress 主题漏洞
  • 鲅鱼圈网站制作免费的crm软件系统
  • 农家乐网站建设方案可以做代销的网站都有哪些
  • 做网站推广广告自建房设计网站推荐
  • 海南省城乡建设部网站首页it运维需要学什么
  • 深圳企业网站建设公司哪家好怎么做响应式网站
  • 备案系统网站制作网站的步骤和方法
  • 清溪仿做网站天津网站建设服务好
  • 怎么做一个商城网站住房和城乡建设部网站杂志
  • 网站上职业学校排名 该怎么做2345网址导航手机上网导航下载
  • 台州网站推广技巧付费淘宝客网站开发