目录
装饰者模式介绍
装饰者模式动态的将责任附加到对象身上。想要拓展功能,装饰者提供有别于继承的另一种选择。
路边摊事例
在城市中,总有那么一群人,为我们提供自然的美味肉夹馍和鸡蛋灌饼,在这两种食物上,我们可以额外的加鸡蛋、里脊、火腿、鸡胸肉等等,我们假定他们的价格如下:
食材 |
价格 |
备注 |
肉夹馍 |
5.0元 |
主产品 |
鸡蛋灌饼 |
4.0元 |
主产品 |
鸡蛋 |
1.0元 |
附加品 |
里脊 |
2.0元 |
附加品 |
火腿肠 |
1.5元 |
附加品 |
鸡胸肉 |
1.5元 |
附加品 |
路边摊只提供两种主商品(肉夹馍和鸡蛋灌饼),在这之上,我们可以添加其他的辅料,比如鸡蛋灌饼 + 里脊,那这个时候的价格是6.0元。
路边摊类图
路边摊实现
Food
package com.lulei.study.design.patterns.decorator;
/**
* Created by lulei on 2019/4/19.
*/
public abstract class Food {
abstract String getDescription();
abstract double cost();
}