提交 50ed169e 编写于 作者: 武汉红喜's avatar 武汉红喜

design pattern

上级 81ba84a6
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 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();
}
}
package com.whatsmars.tomcat.design.adapter;
/**
* Created by shenhongxi on 16/4/14.
*/
public interface Target {
public void request();
}
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 MessageBoard implements MessageBoardHandler {
public String filter(String msg) {
return "留言板上的内容:" + msg;
}
}
\ No newline at end of file
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);
}
}
\ No newline at end of file
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 SensitiveFilter extends MessageBoardDecorator {
public SensitiveFilter(MessageBoardHandler handler) {
super(handler);
}
public String filter(String content) {
String temp = super.filter(content);
temp += "^^过滤掉政治敏感的字眼!^^";
return temp;
}
}
\ No newline at end of file
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);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册