装饰者设计模式

说明:今天忽然想起好久之前学习的装饰者设计模式,总结了一下。原理就是:如果一个类已经被包装好了,我们想对这个类的某个方法在增加一些新的内容。

如何在不需要对原先包装好的类上进行增加呢??

分为三步:

1、已经实现某些方法的类继承一个接口。那我也需要去继承这个接口。

2、覆写这个接口的共同方法。(需要装饰的那个方法)

3、需要把原先包装好的类的实例传递进来。

下面是一个DEMO,以便于理解:

class DecratorCat implements ICat{

    private ICat cat;

    public DecratorCat(ICat cat){
        
        this.cat = cat;
    }
    
    @Override
    public void run() {
        
        //添加 自己的逻辑 
        
        System.out.println("小黑 抓住 老鼠 只用 了  3秒 时间 ...");
        
        //调用 原 有的逻辑 
        cat.run();
    }
}

// 被装饰者
class Cat implements ICat{
    
    
    public void run(){
        
        System.out.println("小黑的黑暗中奔跑 抓住了 一只 老鼠...");
        
    }
}

interface ICat{
    public void run();
}
    // 2. 装饰设计模式 :   装饰者 和 被装饰者
    // 用的时候, 要满足的条件:
    /*
     *    两个条件: 
     *        第一个:    
     *            装饰者和被装饰者 必须要实现同样的接口或者 有共同 父类 
     *        第二个:
     *             被装饰者 必须要 传递给 装饰者 --- 装饰者持有 对被装饰者的引用
     */
    
    @Test
    public void test2(){
        
        DecratorCat cat = new DecratorCat(new Cat());
        
        cat.run();
        
    }
    

 

posted on 2016-12-01 18:09  放纵的卡尔  阅读(172)  评论(0编辑  收藏  举报

导航