装饰模式
装饰模式(Decorator Pattern)可动态地给一个对象增加一些额外的职责。
Component:表示抽象构件,它是定义对象的接口,可以给这些对象动态增加职责(方法);
ConcreteConcreteComponent :表示具体组件,它定义具体的组件对象,装饰器可以给他增加额外的职责(方法);
Decoator:表示抽象饰品类它定义了一个指定抽象组件的指针,并定义了一组与抽象接口一致的方法;
ConcreteDecorator表示具体的装饰类,它负责向组件添加新的职责;
装饰模式之界面显示构建库:
抽象构件:Window
package Component;
public abstract class Window {
public abstract void display();
}
具体构建:SimpleWindow
package ConcreteComponent;
import Component.Window;
public class SimpleWindow extends Window {
@Override
public void display() {
System.out.println("显示窗体");
}
}
抽象装饰者类:
package Decorator;
import Component.Window;
public class WindowDecorator extends Window {
private Window window;
public WindowDecorator(Window window){
this.window=window;
}
public void display() {
window.display();
}
}
具体装饰类:滚动条窗口
package ConcreteDecorator;
import Component.Window;
import Decorator.WindowDecorator;
public class ScrollbarDecorator extends WindowDecorator {
public ScrollbarDecorator(Window window) {
super(window);
}
@Override
public void display() {
this.setScrollbar();
super.display();
}
public void setScrollbar(){
System.out.println("给窗体增加滚动条");
}
}
具体装饰类:透明窗体装饰类
package ConcreteDecorator;
import Component.Window;
import Decorator.WindowDecorator;
public class TransportDecorator extends WindowDecorator {
public TransportDecorator(Window window) {
super(window);
}
public void setTransport(){
System.out.println("将窗体设置为透明窗体");
}
public void display(){
this.setTransport();
super.display();
}
}
测试类:
package Test;
import Component.Window;
import ConcreteComponent.SimpleWindow;
import ConcreteDecorator.ScrollbarDecorator;
import ConcreteDecorator.TransportDecorator;
public class test {
public static void main(String args[]){
Window windowS,WindowSB,windowT;
windowS=new SimpleWindow();
WindowSB=new ScrollbarDecorator(windowS);
windowT=new TransportDecorator(WindowSB);
windowT.display();
}
}
测试结果: