首页 > 其他 > 详细

设计模式(装饰模式)

时间:2015-06-12 18:55:27      阅读:122      评论:0      收藏:0      [点我收藏+]

装饰模式用于给对象动态而灵活的添加属性,主要包含如下几个角色:

  • Component:定义一个对象接口,可以给这些对象动态地添加职责,本例中是Product
  • ConcreteComponent:具体的对象,用以被添加属性,本例中是ProductImpl,通过addAttribute被添加属性
  • Decorator:装饰器的抽象,维持一个Component指针,并继承该指针;本例中是BaseChange
  • ConcreteComponent:具体的装饰器,本例中是OneChange和TwoChange

技术分享

代码如下:

  • Product
public interface Product {
    public void addAttribute();
}
  • ProductImpl
public class ProductImpl implements Product {

    @Override
    public void addAttribute() {
        System.out.println("Add base Attribute");
    }
}
  • BaseChange
public class BaseChange implements Product {
    
    private Product product;
    
    public BaseChange(Product product){
        this.product = product;
    }

    @Override
    public void addAttribute() {
        product.addAttribute();
    }
}
  • OneChange && TwoChange
public class OneChange extends BaseChange {

    public OneChange(Product product) {
        super(product);
    }
    
    @Override
    public void addAttribute() {
        super.addAttribute();
        System.out.println("One Change");
    }
}
public class TwoChange extends BaseChange {
    
    public TwoChange(Product product) {
        super(product);
    }
    
    @Override
    public void addAttribute() {
        super.addAttribute();
        System.out.println("Two Change");
    }
}
  • App
public class App {

    public static void main(String[] args) {
        Product product = new ProductImpl();
        
        Product change = new TwoChange(new OneChange(product));
        change.addAttribute();
    }

}

输出结果为:

Add base Attribute
One Change
Two Change

 

设计模式(装饰模式)

原文:http://www.cnblogs.com/Fredric-2013/p/4572218.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!