设置模式之 -> 装饰着模式

package javatuning.ch2.decorator;

public interface IPacketCreator {
	public String handleContent();
}

------------------------------------------------------------------------------
package javatuning.ch2.decorator;

public class PacketBodyCreator implements IPacketCreator{
	@Override
	public String handleContent() {
		return "Content of Packet";
	}
}

------------------------------------------------------------------------------
package javatuning.ch2.decorator;

public abstract class PacketDecorator implements IPacketCreator{
	IPacketCreator componet;
	public PacketDecorator(IPacketCreator c){
		componet=c;
	}
}

------------------------------------------------------------------------------
package javatuning.ch2.decorator;

public class PacketHTMLHeaderCreator extends PacketDecorator{

	public PacketHTMLHeaderCreator(IPacketCreator c) {
		super(c);
	}

	@Override
	public String handleContent() {
		StringBuffer sb=new StringBuffer();
		sb.append("<html>");
		sb.append("<body>");
		sb.append(componet.handleContent());
		sb.append("</body>");
		sb.append("</html>\n");
		return sb.toString();
	}
}

------------------------------------------------------------------------------
package javatuning.ch2.decorator;

public class PacketHTTPHeaderCreator extends PacketDecorator{
	public PacketHTTPHeaderCreator(IPacketCreator c) {
		super(c);
	}

	@Override
	public String handleContent() {
		StringBuffer sb=new StringBuffer();
		sb.append("Cache-Control:no-cache\n");
		sb.append("Date:Mon,31Dec201204:25:57GMT\n");
		sb.append(componet.handleContent());
		return sb.toString();
	}
}

------------------------------------------------------------------------------
package javatuning.ch2.decorator;

public class Main {
	public static void main(String[] args) {
		IPacketCreator pc=new PacketHTTPHeaderCreator(
							new PacketHTMLHeaderCreator(
								new PacketBodyCreator()));
		System.out.println(pc.handleContent());
	}
}
发布了176 篇原创文章 · 获赞 1 · 访问量 7177

猜你喜欢

转载自blog.csdn.net/qq_37769323/article/details/104173365