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

做网站是如何赚钱的做石材一般用哪些网站推销

做网站是如何赚钱的,做石材一般用哪些网站推销,有什么网站开发客户,广西新闻小谈设计模式(7)—装饰模式 专栏介绍专栏地址专栏介绍 装饰模式装饰模式角色Component(抽象组件)ConcreteComponent(具体组件)Decorator(抽象装饰器)ConcreteDecorator(具…

小谈设计模式(7)—装饰模式

  • 专栏介绍
    • 专栏地址
    • 专栏介绍
  • 装饰模式
    • 装饰模式角色
      • Component(抽象组件)
      • ConcreteComponent(具体组件)
      • Decorator(抽象装饰器)
      • ConcreteDecorator(具体装饰器)
    • 工作流程
      • 首先
      • 其次
      • 然后
      • 最后
    • Java代码实现
      • 代码分析
    • 优缺点分析
      • 优点
        • 符合开闭原则
        • 可以动态地添加/删除功能
        • 遵循单一职责原则
        • 装饰器类与具体组件类独立
      • 缺点
        • 可能产生过多的具体装饰器类
        • 装饰器与组件类的接口不一致
    • 总结

专栏介绍

专栏地址

link

专栏介绍

主要对目前市面上常见的23种设计模式进行逐一分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步,加油,各位。
在这里插入图片描述

装饰模式

装饰模式(Decorator Pattern)是一种结构型设计模式,它允许你动态地向一个对象添加额外的功能,而不需要修改其原始类。通过将对象包装在装饰器类中,你可以在不改变现有对象结构的情况下,逐步地添加功能。

装饰模式角色

在这里插入图片描述

Component(抽象组件)

定义了具体组件和装饰器的共同接口,可以是抽象类或接口。

ConcreteComponent(具体组件)

实现了抽象组件定义的接口,是被装饰的原始对象。

Decorator(抽象装饰器)

包含一个指向具体组件的引用,并实现了抽象组件定义的接口。

ConcreteDecorator(具体装饰器)

通过装饰器对具体组件进行扩展或修改,添加额外的功能。

在这里插入图片描述

工作流程

首先

定义一个抽象组件(Component),它声明了具体组件和装饰器共同的接口方法。

其次

创建一个具体组件(ConcreteComponent),它实现了抽象组件的接口方法,是被装饰的原始对象。

然后

创建一个抽象装饰器(Decorator),它也实现了抽象组件的接口方法,并包含一个指向具体组件的成员变量(通常为抽象组件类型),用于持有被装饰的对象。

最后

创建具体装饰器(ConcreteDecorator),它继承自抽象装饰器,并在装饰器的基础上添加了额外的功能。具体装饰器中通常会重写抽象组件的接口方法,以在调用前后进行额外的处理,然后再调用被装饰对象的相应方法。
在这里插入图片描述

Java代码实现

// Step 1: 定义抽象组件
interface Component {void operation();
}// Step 2: 创建具体组件
class ConcreteComponent implements Component {public void operation() {System.out.println("执行具体组件的操作");}
}// Step 3: 创建抽象装饰器
abstract class Decorator implements Component {protected Component component;public Decorator(Component component) {this.component = component;}public void operation() {component.operation();}
}// Step 4: 创建具体装饰器
class ConcreteDecorator extends Decorator {public ConcreteDecorator(Component component) {super(component);}public void operation() {// 在调用具体组件操作前进行额外处理System.out.println("在调用具体组件操作前进行额外处理");// 调用具体组件的操作super.operation();// 在调用具体组件操作后进行额外处理System.out.println("在调用具体组件操作后进行额外处理");}
}// 使用装饰模式
public class Main {public static void main(String[] args) {// 创建具体组件对象Component component = new ConcreteComponent();// 创建具体装饰器对象,并将具体组件对象传入Component decorator = new ConcreteDecorator(component);// 调用装饰后的操作decorator.operation();}
}

代码分析

Component 是抽象组件接口,ConcreteComponent 是具体组件类,实现了抽象组件接口的方法。Decorator 是抽象装饰器类,实现了抽象组件接口,并持有一个抽象组件类型的成员变量。ConcreteDecorator 是具体装饰器类,继承自抽象装饰器类,并重写了操作方法,在调用前后添加了额外处理。

在主函数中,先创建具体组件对象ConcreteComponent,然后将其传入具体装饰器对象ConcreteDecorator 的构造函数中,用装饰器包装具体组件。最后调用装饰后的操作,会按照一定的顺序执行额外处理和具体组件操作。

优缺点分析

优点

符合开闭原则

可以在不修改现有代码的情况下,通过新增装饰器类来扩展对象的功能。

可以动态地添加/删除功能

可以根据需要动态地添加或删除对象的功能,组合不同的装饰器实现不同的行为组合。

遵循单一职责原则

具体的组件类只负责核心功能,具体的装饰器类只关注附加的功能,各个类职责明确,可维护性高。

装饰器类与具体组件类独立

装饰器类与具体组件类之间是松耦合的关系,可以独立变化,增加或删除装饰器不会影响其他组件的行为。

缺点

可能产生过多的具体装饰器类

如果系统中有很多功能需要扩展,可能会导致产生大量的具体装饰器类,增加系统的复杂性。

装饰器与组件类的接口不一致

在装饰器模式中,装饰器类和具体组件类的接口不一致,导致客户端需要区分调用。
在这里插入图片描述

总结

装饰模式提供了一种灵活的、可扩展的方式来修改对象的功能,同时保持了简单的接口和代码的可维护性。但是需要权衡好扩展的复杂度和对象接口的一致性。

http://www.yayakq.cn/news/814464/

相关文章:

  • 网站受到攻击会怎么样十大免费视频素材网
  • 如何创建网站的详细步骤个人怎么在百度上做推广
  • 公司网站建设费用明细表iis网站主目录
  • 网站扫二维码怎么做网站建设案例算命网站
  • 本地的镇江网站建设wordpress 微信注册地址
  • 注销网站备案时间cms网站建设的优缺点
  • 购物网站建设的原理比百度还强大的搜索引擎
  • 国外移动网站设计包头网站建设包头
  • 网站空间的权限站长是什么级别
  • 嘉兴网站制作网页中国建设质量安全协会网站
  • 国际网站怎么做优化搜索最多的关键词的排名
  • 网站建设时设置语言选项沈阳专业搬钢琴公司
  • 安卓4.3网站开发兼容建网站需要买服务器吗
  • 高端网站建设与发展怎么建一个网站卖东西
  • 海南省建设与执业资格注册中心网站企业网站建设公司怎么收费
  • amp网站建设公司注册网站查询
  • 上海卖房网站软文推广公司
  • wordpress the7 建站做网站的格言
  • 店铺外卖网站怎么做wordpress侧边栏宽度
  • 高端网站建设公司联系电话网络课程网站模板
  • 一般营销方式三大步骤seo 网站 结构
  • 南昌it制作电商网站的公司nodejs网站开发教程
  • 做网站样本电销好做吗alexa排名查询的特点
  • PHP MYSQL网站开发全程实中国建设人才招聘官网
  • 昆明网站建设哪家好优秀网页设计作品赏析
  • 北京企业营销网站建设ui设计哪家培训班好
  • 连云区住房和城乡建设局网站公司建立网站的目的
  • 龙岩网站设计 都找推商吧系统做网站还需要服务器吗
  • php网站开发范例注册了网站怎么建设
  • 设计logo网站免费下载淘客推广平台排名