码迷,mamicode.com
首页 > 其他好文 > 详细

装饰设计模式

时间:2018-12-27 13:33:04      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:灵活   买房   动态   color   bst   Stub   客户端   音乐   打电话   

装饰设计模式

  • 去4s店 买个车 宝马x5 买房 毛坯房 手机(诺基亚) 打电话. 
  • 装饰设计模式概述 
    • 装饰模式就是使用被装饰类的一个子类的实例,在客户端将这个子类的实例交给装饰类。是继承的替代方案 
  • 优点 
    • 使用装饰模式,可以提供比继承更灵活的扩展对象的功能,它可以动态的添加对象的功能,并且可以随意的组合这些功能 
  • 缺点 
    • 正因为可以随意组合,所以就可能出现一些不合理的逻辑
  • 代码实现过程 
    • 定义一个接口 接口里面有个一个打电话功能
public interface Phone {
    public void call();
}

 

    • 向上抽取了一个基本的装饰类 基本的装饰类要保证有通话功能 

?

public abstract class BasicFunction implements Phone {
    private Phone p;

    public BasicFunction(Phone p) {
        this.p = p;
    }

    @Override
    public void call() {
        p.call();
    }
}

 

    • 在定义具体的装饰类 比如 播放音乐 加彩铃
public class MusicFunction extends BasicFunction {
    public MusicFunction(Phone p) {
        super(p);
    }

    @Override
    public void call() {
        // TODO Auto-generated method stub
        super.call();
        System.out.println("手机可以听歌了!!!!!!!!!");
    }
}
    • 定义一个测试类就可以了
public class Test {

    public static void main(String[] args) {
        Iphone p = new Iphone();
        MusicFunction p2 = new MusicFunction(p);
        p2.call();
//        RingFunction p3 = new RingFunction(p);
//        p3.call();
    }
}

 

装饰设计模式

标签:灵活   买房   动态   color   bst   Stub   客户端   音乐   打电话   

原文地址:https://www.cnblogs.com/nangongyibin/p/10184166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!