"装饰模式"-之Java,Android面试必问设计模式(6/9)

下面我们开始讲到面试必问的第六种设计模式:装饰模式


“装饰模式**

概念:
为了给一个对象增加功能:一个接口,一个具体类实现了方法,为了拓展方法,增加一个”装饰类”继承接口,(装饰类里声明被装饰类的实例),方法里面有旧实例的方法,然后加上新的方法即可完成拓展.

1.一个接口
2.一个类继承接口
3.另一个叫装饰类的也继承这个接口,为了拓展功能,并且持有"被装饰类"的实例,并能调用原来的方法

代码

//一个插座"接口"
interface Socket {
    void useSoket();
}

//一个具体的插座"类"
class ConcreateSocket implements Socket {
    @Override
    public void useSoket() {
        System.out.println("标准的排插,有三口和两口的");
    }
}

//装饰类,也是一个具体的"插座类",实现同样的接口,持有被装饰类的实例
class XiaoMiSocket implements Socket {
    ConcreateSocket cs;

    public XiaoMiSocket(ConcreateSocket cs) {
        this.cs = cs;
    }

    @Override
    public void useSoket() {
        //有了原本的功能,又有新的功能
        cs.useSoket();
        System.out.println("我是小米插头,有USB口的");
    }
}
//测试
class Test {
    public static void main(String[] args) {
        //被装饰类(被增加功能)的实例
        ConcreateSocket cs  =new ConcreateSocket();
        //装饰类,持有被装饰类的实例
        Socket xiaomi = new XiaoMiSocket(cs);
        xiaomi.useSoket();

    }
}

输出:

标准的排插,有三口和两口的
我是小米插头,有USB口的
总结:
1.为了拓展功能
2.被装饰类(老的方法)和修饰类(新的方法),都继承一个接口(统一名字的方法)
3."修饰类"拥有"被修饰类"的实例,使用"自己"方法的时候,调用被修饰实例的方法,从而达到拓展功能的目的.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值