Decorator模式
package com.whatsmars.tomcat.design.decorator; /** * @author javahongxi 用户留言板处理的接口 */ public interface MessageBoardHandler { /** * @author javahongxi 用户可以利用函数留言 */ public String filter(String msg); } package com.whatsmars.tomcat.design.decorator; /** * @author javahongxi 用户留言板的具体实现 */ public class MessageBoard implements MessageBoardHandler { public String filter(String msg) { return "留言板上的内容:" + msg; } } package com.whatsmars.tomcat.design.decorator; /** * @author javahongxi 装饰角色 */ public class MessageBoardDecorator implements MessageBoardHandler { private MessageBoardHandler handler; public MessageBoardDecorator(MessageBoardHandler handler) { super(); this.handler = handler; } public String filter(String msg) { return handler.filter(msg); } } package com.whatsmars.tomcat.design.decorator; /** * @author javahongxi 具体装饰角色,增加过滤掉HTML标签的功能 */ public class HtmlFilter extends MessageBoardDecorator { public HtmlFilter(MessageBoardHandler handler) { super(handler); } public String filter(String content) { String temp = super.filter(content); temp += "^^过滤掉HTML标签!^^"; return temp; } } package com.whatsmars.tomcat.design.decorator; /** * @author javahongxi 具体装饰角色,增加过滤掉政治敏感字眼的功能 */ public class SensitiveFilter extends MessageBoardDecorator { public SensitiveFilter(MessageBoardHandler handler) { super(handler); } public String filter(String content) { String temp = super.filter(content); temp += "^^过滤掉政治敏感的字眼!^^"; return temp; } } package com.whatsmars.tomcat.design.decorator; /** * @author javahongxi 客户端测试 */ public class Test { public static void main(String[] args) { MessageBoardHandler mb = new MessageBoard(); String content = mb.filter("一定要学好装饰模式!"); System.out.println(content); mb = new HtmlFilter(new SensitiveFilter(new MessageBoard())); content = mb.filter("一定要学好装饰模式!"); System.out.println(content); } } console: 留言板上的内容:一定要学好装饰模式! 留言板上的内容:一定要学好装饰模式!^^过滤掉政治敏感的字眼!^^^^过滤掉HTML标签!^^
Adapter模式
package com.whatsmars.tomcat.design.adapter; /** * Created by shenhongxi on 16/4/14. */ public class Adaptee { public void specificRequest() { System.out.println("specific request"); } } package com.whatsmars.tomcat.design.adapter; /** * Created by shenhongxi on 16/4/14. */ public interface Target { public void request(); } package com.whatsmars.tomcat.design.adapter; /** * Created by shenhongxi on 16/4/14. */ public class Adapter implements Target { Adaptee adaptee; public void request() { adaptee.specificRequest(); } } package com.whatsmars.tomcat.design.adapter; /** * Created by shenhongxi on 16/4/14. */ public class Adapter2 extends Adaptee implements Target { // 对于我们不必要实现的方法可在Adaptee中作空实现 public void request() { super.specificRequest(); } }
Facade模式
-- 见一个简单的Servlet容器
个人认为上述三种模式可以统称Wrapper模式,熟练之后我们不必在意它们究竟属于何种设计模式,当然类的命名最好按具体的模式来。
相关推荐
奇幻RPG(物品锻造 与 Decorator模式)本文中,我们通过一个常见的给武器(对象)添加宝石(额外的状态和行为)的例子,讨论了Decorator设计模式的实现过程。
Decorator模式 Decorator模式
23种设计模式之八(结构型模式)Decorator模式
java Decorator模式的简单例子
C#设计模式之Decorator 装饰模式,pdf+视频教学,实例演示,易学易用~~
博文链接:https://your.iteye.com/blog/133420
学习java 装饰模式(decorator)非常好的例子
Java类库中Decorator模式的应用研究
设计模式C++学习之装饰模式(Decorator)
NULL 博文链接:https://xiangtui.iteye.com/blog/1033790
动态地给一个对象添加一些额外的职责。就扩展功能而言,它比生成子类方式更为灵活。
设计模式 t07Decorator
装饰器(Decorator)模式 详细教程,简明易懂,非常清晰的,附带有代码示例。
java Decorator设计模式应用,可以简单了解它,初学者入。
设计模式体现的是一种思想,而思想则是指导行为的一切,理解和掌握了设计模式,并不是说记住了23种(或更多)设计场景和解决策略(实际上这也是很重要的一笔财富),实际接受的是一种思想的熏陶和洗礼,等这种思想...
2022年Decorator模式中遭遇继承与聚合Java教程.docx
C#面向对象设计模式纵横谈(10):Decorator 装饰模式(结构型模式) (Level 300)
C#面向对象设计模式 Decorator 装饰模式 视频讲座下载