Java设计模式-装饰模式(鸡腿堡价格)

装饰模式(别名:包装器)
动态地给对象添加一些额外的职责。就功能来说装饰模式相比生成子类更为灵活。装饰( Decorator )模式又叫做包装模式。通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。装饰模式是动态地扩展一个对象的功能,而不需要改变原始类代码的一种成熟模式。在装饰模式中,“具体组件”类和“具体装饰”类是该模式中的最重要的两个角色。
装饰模式的类图;
装饰模式的类图;
鸡腿堡·实例:
现在需要一个汉堡,主体是鸡腿堡,可以选择添加生菜、酱、辣椒等等许多其他的配料,并根据选择的配料计算相应的价格。
首先画出类图:
在这里插入图片描述
代码如下:组件 humburger:

      package humburger;
    public interface humburger {

    public String description();

    public int price();
    }

具体组件 jituihb:


    public class jituihb implements humburger {
    private String description;
    private int price;

    public String description(){
        return description="鸡腿堡";
    }

    public int price(){
        return 10;
    }

}

装饰者:Decorator:

package humburger;

public abstract class Decorator implements humburger {
    private humburger humburger;

    public abstract String description();
    public int price(){
		return 0;
    	
    }

}

具体装饰者:cai,lajiao,jiang

package humburger;

public class cai extends Decorator {
    private humburger humburger;
    private int price;
    private String description;
    public cai(humburger humburger) {
		this.humburger=humburger;
	}

	public String description(){
        return humburger.description()+"加菜";
    }

    public int price(){
        return humburger.price()+1;
    }

}
package humburger;

public class lajiao extends Decorator {
    private humburger humburger;
    private int price;
    private String description;
    public lajiao(humburger humburger) {
	  this.humburger=humburger;
}
    public String description(){
        return humburger.description()+"加辣椒";
    }

    public int price(){
        return humburger.price()+3;
    }

}
package humburger;

public class jiang extends Decorator {
    private humburger humburger;
    private int price;
    private String description;
    public jiang(humburger humburger) {
		this.humburger=humburger;
	}
	public String description(){
        return humburger.description()+"加酱";
    }

    public int price(){
        return humburger.price()+2;
    }

}

然后我们来在Test的类中具体的实现:

package humburger;

public class Test {
   public static void main(String[] args) {
	  humburger humburger=new jituihb();
	  System.out.println(humburger.description()+"价钱:"+humburger.price()+"元");
      cai cai=new cai(humburger);
      System.out.println(cai.description()+"价钱:"+cai.price()+"元");
      jiang jiang=new jiang(humburger);
      System.out.println(jiang.description()+"价钱:"+jiang.price()+"元");
      lajiao lajiao=new lajiao(humburger);
      System.out.println(lajiao.description()+"价钱:"+lajiao.price()+"元");

这样我们的Java设计模式的装饰者模式----为鸡腿堡加料并且加上对应的价钱,就设计好了。用这样的模式体现了松耦合的特点,也易于扩充。
最后附上运行结果图:
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值