第十六条:复合优先于继承

来源:互联网 发布:微博刷转发软件 编辑:程序博客网 时间:2024/04/30 13:57

一、什么是复合

复合也可为称为装饰者模式,那么如何使用装饰者模式呢。

首先:创建被装饰接口
其次:创建被装饰类
然后:创建装饰类

那么我们就以装饰水果篮子为例。
装饰类就是:Apple、Orange等水果    被装饰类就是:Basket
首先创建被装饰接口(Basket):
<span style="font-size:18px;">public interface Basket {//该方法展示篮子里面有什么void show();}</span>
其次:创建被装饰类(直接继承接口,重写方法)
<span style="font-size:18px;">public class EmptyBasket implements Basket {@Overridepublic void show() {System.out.println("I am a basket");}}</span>
然后:创建装饰类以Apple为例
public class AppleBasket implements Basket {//接收上一个装饰类private Basket basket;public AppleBasket(Basket basket) {// TODO Auto-generated constructor stubthis.basket = basket;}@Overridepublic void show() {// TODO Auto-generated method stub//调用上一个装饰类的方法basket.show();//本身的装饰System.out.println("I am apple");}}
使用:
Basket basket = new AppleBasket(new OrangeBasket(new EmptyBasket()));basket.show()

二、使用继承的缺点
继承打破了封装性:因为如果子类继承超类,如果超类的方法有所改变,那么子类就可能会遭到破坏。
举例:





0 0
原创粉丝点击