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

wordpress 整站源码自己怎么创网站

wordpress 整站源码,自己怎么创网站,制作一个软件的过程,公司网站制作汇报会文章目录 引言装饰器模式简介定义与用途实现方式 使用场景优势与劣势装饰器模式在Spring中的应用画图示例代码地址 引言 在日常生活中,我们常常对基本事物添加额外的装饰以增强其功能或美观。例如,给手机加一个保护壳来提升其防护能力,或者在…

文章目录

  • 引言
  • 装饰器模式简介
    • 定义与用途
    • 实现方式
  • 使用场景
  • 优势与劣势
  • 装饰器模式在Spring中的应用
  • 画图示例
  • 代码地址

引言

在日常生活中,我们常常对基本事物添加额外的装饰以增强其功能或美观。例如,给手机加一个保护壳来提升其防护能力,或者在房间里添加装饰品以提升美观。这种增加附加功能的做法在软件开发中也有所体现,特别是在装饰器模式中。装饰器模式允许我们在不改变对象自身的基础上,为对象添加新的功能。这种模式在软件开发中非常有用,特别是当我们希望动态地、透明地为对象增加职责时。

装饰器模式简介

定义与用途

装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许用户在不改变对象自身的基础上向一个对象添加新的功能。在这种模式中,我们通过创建一个包装对象,也称为装饰器,来包裹真实对象。

实现方式

实现装饰器模式通常包括以下几个关键组件:

  • 抽象组件(Component): 定义了一个对象接口,可以给这些对象动态地添加职责。
  • 具体组件(Concrete Component): 定义了抽象组件的具体实现,即被装饰的对象。
  • 抽象装饰器(Decorator): 持有一个组件(Component)对象的引用,并定义了符合组件接口的接口。
  • 具体装饰器(Concrete Decorator): 实现抽象装饰器的接口,并添加额外的功能。

使用场景

装饰器模式非常适合以下场景:

  • 当需要扩展一个类的功能时。
  • 当需要动态地为对象增加功能,且这些功能可以再动态地撤销。
  • 当扩展类的功能比创建子类更有弹性时。

例如:

  1. 图形用户界面组件装饰:在图形用户界面中,可以用装饰器模式给基本组件(如按钮、文本框等)动态添加一些附加功能,比如边框、阴影、鼠标悬停效果等。

  2. 数据流增强:在数据流处理中,如文件流、网络流等,装饰器模式可以用来动态地添加新的功能,比如数据加密、压缩、缓冲等。

  3. 权限控制:在一些应用程序中,根据用户的权限级别动态地给对象添加不同的行为(例如,对基本功能的访问权限控制)。

  4. 性能监控:在性能监控和日志记录中,装饰器可以被用来在不更改原有类的基础上,为方法或对象添加日志记录和性能监控的功能。

  5. 动态添加属性或行为:在需要为对象动态添加属性或行为的场景,比如在游戏开发中给角色添加不同的技能或状态效果,装饰器模式提供了一种灵活的解决方案。

  6. Web 服务中的中间件:在Web开发中,中间件可以看作是对HTTP请求或响应的装饰器,用于处理认证、日志记录、错误处理等。

优势与劣势

  • 优势
    增加对象功能: 装饰器模式提供了一种灵活的方式来增加对象的功能,与继承相比,这种方式更具灵活性。
    动态扩展: 可以在运行时动态地添加或删除功能。
    避免类爆炸: 减少了子类的数量,避免了类数量过多的问题。
  • 劣势
    增加系统复杂性: 添加装饰器可以使系统变得更加复杂,特别是当有很多层装饰时。
    维护困难: 更复杂的代码意味着维护起来更困难。

装饰器模式在Spring中的应用

1. Spring AOP(面向切面编程)
Spring AOP是装饰器模式的一个经典应用例子。在Spring AOP中,切面(Aspect)可被视为装饰器,它们为业务逻辑(如服务层的方法)提供了附加功能(例如,事务管理、日志记录、安全性检查等),而不修改原有功能的代码。通过代理模式结合装饰器模式,Spring AOP在运行时动态地向对象添加额外的行为。2. Spring I/O资源抽象
在Spring的资源抽象(如Resource接口和其实现类)中,装饰器模式被用来增强基础资源对象(如文件系统资源、类路径资源等)的功能。例如,BufferedInputStream是Java I/O的一个装饰器,Spring结合使用这些装饰器以提供高效的数据访问。3. Spring MVC的视图技术集成
Spring MVC框架通过使用装饰器模式,可以将不同的视图技术(如JSP、Freemarker、Thymeleaf)无缝集成到同一模型中。控制器返回模型和视图对象,而实际的视图可以是任何实现了View接口的对象,这些视图对象可以是装饰过的对象,提供了额外的渲染逻辑。4. Spring Security的身份验证和授权
Spring Security使用装饰器模式来增强或修改用户的身份验证对象(如UserDetails),并在安全上下文中添加额外的安全属性。这允许开发者在不改变现有身份验证逻辑的基础上,轻松地添加或改变认证信息。5. Spring的事务管理
在Spring的声明式事务管理中,装饰器模式被用于动态地添加事务管理逻辑到业务逻辑上。例如,通过使用@Transactional注解,Spring在运行时创建一个代理对象(装饰器),围绕着原始的bean实例,以提供事务管理的功能。6. Spring的数据访问集成
Spring的数据访问集成(如JdbcTemplate、HibernateTemplate等)也使用装饰器模式来提供额外的数据处理功能,比如异常翻译、资源管理等,而不改变原有数据访问逻辑。

画图示例

在这里插入图片描述
步骤 1: 创建图形一个接口。

public interface Shape {void draw();
}

步骤 2: 创建实现相同接口的具体类。

public class Rectangle implements Shape {@Overridepublic void draw() {System.out.println("图形:矩形");}}
public class Circle implements Shape{@Overridepublic void draw() {System.out.println("图形:圆形");}}

步骤 3: 创建实现 Shape 接口的抽象装饰器类。

public abstract class ShapeDecorator implements Shape {protected Shape decoratedShape;public ShapeDecorator(Shape decoratedShape){this.decoratedShape = decoratedShape;}@Overridepublic void draw(){decoratedShape.draw();}}

步骤 4: 创建扩展 ShapeDecorator 类的具体装饰器类。给画图加上边框红边的功能

public class RedShapeDecorator extends ShapeDecorator{public RedShapeDecorator(Shape decoratedShape) {super(decoratedShape);}@Overridepublic void draw() {decoratedShape.draw();setRedBorder(decoratedShape);}private void setRedBorder(Shape decoratedShape){System.out.println("边框颜色:红色");}}

步骤 5: 使用 RedShapeDecorator 来装饰 Shape 对象。

public class DecoratorPatternDemo {public static void main(String[] args) {Shape circle = new Circle();Shape redCircle = new RedShapeDecorator(new Circle());Shape redRectangle = new RedShapeDecorator(new Rectangle());System.out.println("带有普通边框的圆形");circle.draw();System.out.println("\n带有红色边框的圆形");redCircle.draw();System.out.println("\n带有红色边框的矩形");redRectangle.draw();}}

在这里插入图片描述
在这个具体示例中,展示的是如何使用装饰器模式为简单的形状对象(如圆形和矩形)添加新的功能(如设置边框颜色)。

代码地址

23种设计模式相关代码后续会逐步提交到github上,方便学习,欢迎指点:
代码地址
https://github.com/RuofeiSun/lf-23Pattern

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

相关文章:

  • 网站建设运维合同数字创意设计包括哪些方面
  • 咖啡网站源码兰州今天发生的重大新闻
  • 网站后台登录系统是怎么做的wordpress 正在例行维护
  • 南京的网站制作公司深圳福田口岸
  • 网站开发学习视频建设手机网银可以自己提升额度吗
  • 响应式网站和自适应网站区别佛山网站建站
  • 龙岩人才网兼职招聘太原seo服务
  • 做金属的网站创建网站并制作首页教案
  • 分类型网站建设如何通过做网站挣钱
  • 公司的网站建设费怎么入账东莞石碣网站建设
  • 学习网站建设与管理电子代加工东莞网站建设
  • 广州企业网站建站vR网站建设程序
  • 求个网站这么难吗2022年贴吧彩网站开发
  • 网站数据做面板分析phpcms 网站转移
  • 用wordpress建立学校网站长治怎么做平台软件
  • 建设部网站城建学院网站的标题优化怎么做
  • 创建网站需要哪些要素让网站引用字体
  • 响应式网站欣赏给我一个用c 做的网站
  • 网站建设服务方案ppt模板wordpress文章被采集
  • 佛山新网站制作代理商公司起名网站
  • 公众号网站制作建设工程施工司法解释
  • 同安区建设局网站做抽奖网站合法吗
  • 网站建设怎么让百度搜索到宁波智能模板建站
  • 新乡网站建设waterseo厦门制作网站哪家好
  • 想给孩子找点题做 都有什么网站h5建站工具
  • 手机网站设计只选亿企邦男科医生免费咨询
  • 同类色相的网站铜山区建设局局网站周保春
  • seo综合查询网站域名被墙查询检测
  • 广东人才招聘网宁波seo站外优化推广
  • 个人建网站成本互联网上网络营销的推广