您当前的位置: 首页 > 

梁云亮

暂无认证

  • 3浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

装饰设计模式

梁云亮 发布时间:2019-10-12 15:22:43 ,浏览量:3

装饰设计模式

说明:装饰设计模式,可以在原有技能的基础上,新增技能,降低继承所带来的耦合性

示例:通过模拟Java官方API中的FileWriter与BufferedWriter来模拟装饰设计模式 第一步:定义抽象类
public abstract class Writer2 {
    public abstract void write();
}
第二步:定义过时的类
public class FileWriter2 extends Writer2 {
    @Override
    public void write() {
        System.out.println("FileWriter 的 writer() 方法 ");
    }
}
第三步:测试
public static void main(String[] args) {//psvm
    FileWriter2 writer2 = new FileWriter2();
    writer2.write();
}
第四步:定义新的针对过时类的功能增强类
public class BufferedWriter2 extends Writer2 {
    private Writer2 writer2;
    public BufferedFileWriter2(Writer2 writer2) {
        this.writer2 = writer2;
    }
    @Override
    public void write() {
        System.out.println("新的增强的功能");
        writer2.write();
    }
}
第五步:测试
public static void main(String[] args)  {//psvm
    FileWriter2 writer2 = new FileWriter2();
    BufferedWriter2 bufferedFileWriter2 = new BufferedWriter2(writer2);
    bufferedWriter2.write();
}
装饰设计模式和继承的区别

装饰是构造函数参数传递进行增强 如果为了某个功能而产生子类(继承)那么那个体系是非常臃肿的 装饰模式比继承要灵活。避免了继承体系臃肿。而且降低了类于类之间的关系。 装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能。 所以装饰类和被装饰类通常是都属于一个体系中的。

  • 优点: –装饰模式降低了类与类之间的耦合度,可以动态地增加或删除功能,装饰类及具体装饰类可以独立地进行变化,以便后期增加或者删除类。 –扩展对象功能,比继承要灵活,不会导致类的个数急剧地增加。
  • 缺点: –产生很多的小对象,大量的小对象会占用内存。 –组合方式很多,很容易出错。
关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0484s