首页 > Java > java教程 > 正文

Java设计模式之装饰模式的原理及实现方法是什么?

WBOY
发布: 2023-04-22 10:52:08
转载
1275人浏览过

1.什么是装饰模式

当我们想要改进或增强某个对象的功能,而又不想继承该类创建子类,可以考虑使用装饰模式。

使用装饰模式增强对象的某个功能,比生成子类再增强,更为灵活。

2.如何实现

1)抽象组件:定义一个抽象类,该抽象类定义了“被装饰者”需要被“装饰的方法”

2)具体组件:抽象组件的一个子类。成为“被装饰类”

3)装饰组件:也是抽象组件的一个子类。该类中持有“被装饰者”的引用,用来调用被装饰者的方法。可以为抽象类,也可以是非抽象类。

立即学习Java免费学习笔记(深入)”;

4)具体装饰类:是装饰组件的一个子类,被称为“装饰者”

3.代码实现

1)抽象组件

/**
 * 抽象组件,定义了被装饰类需要装饰的方法
 */
public abstract class ICake {
    /**
     * 需要装饰的方法
     * @return
     */
    public abstract int getPrice();
}
登录后复制

2)被装饰者

/**
 * 被装饰者,是抽象组件的一个子类,定义需要被装饰的方法
 */
public class Cake extends ICake {
    /**
     * 被装饰类中,装饰方法的基本实现
     * @return
     */
    @Override
    public int getPrice() {
        System.out.println("getPrice");
       return 100;
    }
}
登录后复制

3)装饰类

/**
 * 装饰类,也是抽象组件的一个子类。
 * 可以是抽象类,也可以是非抽象类。
 */
public abstract class CakeDecorator extends ICake {
    /**
     * 被装饰类的引用,需要在装饰类中,调用到被装饰类的方法。
     */
    ICake cake;
    public CakeDecorator(ICake cake){
        this.cake = cake;
    }
}
登录后复制

4)具体装饰

创意艺术设计的网站模板
创意艺术设计的网站模板

创意艺术设计的网站模板 创意艺术是指是把再简单不过的东西或想法不断延伸给予的另一种表现方式,创意设计包括工业设计、建筑设计、包装设计、平面设计、服装设计、个人创意特区等内容。 设计除了具备“初级设计”和“次设计”的因素外,还需要融入“与众不同的设计理念——创意”。搜索 一、初级设计 范围划分一般是以是否在表达图形上是否以“具象化”为指导目标,标志设计就像绘画一样真实表现图形。 二、次级设

创意艺术设计的网站模板 50
查看详情 创意艺术设计的网站模板
/**
 * 具体装饰类
 */
public class BlueBerryCake extends CakeDecorator {
    public BlueBerryCake(ICake cake) {
        super(cake);
    }
    /**
     * 被装饰的方法
     * 在调用到被装饰类的基础方法后,还要调用装饰类要增强的方法
     * @return
     */
    @Override
    public float getPrice(){
        return cake.getPrice()+elsePrice();
    }
    /**
     * 增强的方法
     * @return
     */
    private float elsePrice(){
        System.out.println("else getPrice");
        return 50;
    }
}
登录后复制

5)测试类

public class TestDecorator {
    public static void main(String args[]){
        ICake cake = new Cake();
        CakeDecorator decorater = new BlueBerryCake(cake);
        float price = decorater.getPrice();
        System.out.println(price);
    }
}
登录后复制

4.拓展

1)利用子类继承也能实现某个方法的增强。相比通过装饰模式实现,装饰模式有和优势?

被装饰者和装饰者是松耦合关系。装饰类仅仅依赖于抽象组件,装饰类只需要知道被装饰类是抽象组件的一个子类,而不必知道具体是哪个子类。

装饰模式满足“开-闭原则”,不必修改具体组件,就可以增加针对该组件的装饰类。

5.JavaIo与装饰模式

java.IO包中的很多类使用了装饰模式。

Reader

FileReader

BufferdReader

以上就是Java设计模式之装饰模式的原理及实现方法是什么?的详细内容,更多请关注php中文网其它相关文章!

相关标签:
java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:亿速云网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号