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

公司内部自己做抽奖网站国家市场监管总局

公司内部自己做抽奖网站,国家市场监管总局,网站流量限制,给我免费观看片在线观看介绍 装饰器模式 装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许你动态地将行为添加到现有的对象中,而无需修改其代码。装饰器模式提供了比继承更灵活的功能扩展方式。 主要角色 Component:定义一个对…

介绍

装饰器模式

装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许你动态地将行为添加到现有的对象中,而无需修改其代码。装饰器模式提供了比继承更灵活的功能扩展方式。

主要角色
  1. Component:定义一个对象接口,可以给这些对象动态地添加职责。
  2. ConcreteComponent:具体实现Component接口的类,即被装饰器装饰的原始对象。
  3. Decorator:装饰器基类,持有一个Component对象的引用,并且与Component接口保持一致。
  4. ConcreteDecorator:具体的装饰器类,实现具体要向Component添加的功能。

Java代码实现示例

我们将通过一个简单的例子来演示装饰器模式。假设我们有一个基本的消息发送系统,能够发送简单的文本消息。现在我们希望能够在发送消息之前对消息进行加密,并在发送之后记录日志。

定义组件接口和具体组件
// Component
interface Message {String send();
}// ConcreteComponent 被装饰者
class TextMessage implements Message {private String content;public TextMessage(String content) {this.content = content;}@Overridepublic String send() {return "Sending message: " + content;}
}
定义装饰器基类和具体装饰器
// Decorator 装饰者 (增强)
abstract class MessageDecorator implements Message {protected Message wrapped;public MessageDecorator(Message wrapped) {this.wrapped = wrapped;}@Overridepublic String send() {return wrapped.send();}
}// ConcreteDecoratorA
class EncryptedMessageDecorator extends MessageDecorator {public EncryptedMessageDecorator(Message wrapped) {super(wrapped);}@Overridepublic String send() {String originalMessage = wrapped.send();String encryptedMessage = encrypt(originalMessage);return "Encrypted(" + encryptedMessage + ")";}private String encrypt(String message) {// 简单的模拟加密逻辑StringBuilder encrypted = new StringBuilder(message);return encrypted.reverse().toString();}
}// ConcreteDecoratorB
class LoggedMessageDecorator extends MessageDecorator {public LoggedMessageDecorator(Message wrapped) {super(wrapped);}@Overridepublic String send() {String result = wrapped.send();log(result);return result;}private void log(String message) {System.out.println("Logging: " + message);}
}
使用装饰器模式
public class Main {public static void main(String[] args) {Message message = new TextMessage("Hello, World!");// 使用加密装饰器Message encryptedMessage = new EncryptedMessageDecorator(message);System.out.println(encryptedMessage.send());  // 输出加密后的消息// 使用日志装饰器Message loggedMessage = new LoggedMessageDecorator(message);System.out.println(loggedMessage.send());  // 日志消息并输出// 组合装饰器Message encryptedLoggedMessage = new LoggedMessageDecorator(new EncryptedMessageDecorator(message));System.out.println(encryptedLoggedMessage.send());  // 输出加密并记录日志的消息}
}

运行结果

解释

  1. Message接口:定义了发送消息的方法 send
  2. TextMessage类:实现了Message接口,表示一个简单的文本消息。
  3. MessageDecorator抽象类:也是Message接口的实现,但它持有一个Message对象,并在其方法调用时委托给该对象。
  4. EncryptedMessageDecorator类:扩展MessageDecorator,通过重写 send 方法添加加密功能。
  5. LoggedMessageDecorator类:扩展MessageDecorator,通过重写 send 方法添加日志记录功能。

通过这种方式,我们可以在不修改原始类的情况下,为对象动态添加新功能。这提供了一种比继承更灵活、可扩展性更强的方式来增强对象的行为。

类图

装饰器模式(Decorator Pattern)是一种结构型设计模式,允许你通过将对象放入包装对象中来动态地添加行为,相比继承更加灵活。以下是装饰器模式的类图示例:

+----------------------------------+
|             Component            |
+----------------------------------+
| operation(): void                |
+----------------------------------+^||
+-----------------------------+
|         ConcreteComponent   |
+-----------------------------+
| operation(): void           |
+-----------------------------+△|
+-----------------------------+
|          Decorator           |
+-----------------------------+
| component: Component         |
| operation(): void           |
+-----------------------------+||
+-----------------------------+
|       ConcreteDecoratorA    |
+-----------------------------+
| operation(): void           |
| addedBehavior(): void       |
+-----------------------------+△|
+-----------------------------+
|       ConcreteDecoratorB    |
+-----------------------------+
| operation(): void           |
| addedBehavior(): void       |
+-----------------------------+

说明:

  1. Component(抽象构件)

    • 定义一个对象接口,可以给这些对象动态地添加职责。
    • operation() 是抽象操作,可以是接口或者抽象类。
  2. ConcreteComponent(具体构件)

    • 定义一个具体的对象,也可以给这个对象添加一些职责。
  3. Decorator(装饰器抽象类)

    • 持有一个 Component 对象的引用,并定义一个与 Component 接口一致的接口。
    • 可以用来装饰 Component 对象,增加其行为。
  4. ConcreteDecoratorA、ConcreteDecoratorB(具体装饰器)

    • 负责给具体构件对象添加额外的职责。

类图说明:

  • Component 是抽象构件角色,定义了对象接口。
  • ConcreteComponent 是具体构件角色,实现了 Component 接口的具体对象。
  • Decorator 是装饰器抽象类,持有一个 Component 对象的引用,并定义了与 Component 接口一致的接口。
  • ConcreteDecoratorA、ConcreteDecoratorB 是具体装饰器类,实现了 Decorator 定义的接口,负责给 Component 对象添加额外的职责。

装饰器模式的核心是通过组合而非继承来扩展对象的功能,使得动态添加功能更加灵活。

http://www.ds6.com.cn/news/76725.html

相关文章:

  • 商城网站数据库免费crm客户管理系统
  • 网站问卷调查系统怎么做官网排名优化
  • 机械网站优化国家培训网官网
  • 游戏网站怎么做网络营销机构官方网站
  • 如何建网站吗?微信小程序开发多少钱
  • 怎样做企业网站建设怎么免费创建自己的网站
  • 遵义花果园网站建设网络推广页面
  • 枣庄网站制作公司网站推广优化网址
  • 页面设计模板素材深圳seo关键词优化
  • wordpress 底部样式seo网上培训多少钱
  • 做推广优化的网站有哪些网络营销的认识与理解
  • WordPress不支持大数据网站优化怎么做
  • 网站制作有名 乐云践新专家百度推广公司哪家比较靠谱
  • 石家庄网站开发多少钱网站建设平台
  • 51testing培训费用镇江搜索优化技巧
  • 女生学电子商务就业前景西安seo外包行者seo
  • 海南城乡住房建设厅网站图片外链上传网站
  • 延安有哪些做网站的公司cba目前排行
  • 个人网站免费建站网站服务器地址查询
  • 做外发的网站海口关键词优化报价
  • 做桂林网站的图片大全官方正版清理优化工具
  • 电气工程专业毕业设计代做网站百度网盘账号登录入口
  • 沈阳专业网站制作设计宁波优化推广选哪家
  • 嘉峪关建设局公告网站武汉百度关键词推广
  • 中山企业手机网站建设刷关键词要刷大词吗
  • 在哪个网站可以自助建站个人怎么在百度上打广告
  • 厦门哪里有做网站1688seo优化是什么
  • 网站建设使用多语言360搜索引擎优化
  • vue做的商城网站软文写作是什么意思
  • 西部数码做的网站打不开济南网站建设哪家好