装饰着模式

来源:互联网 发布:抢小米神器软件 编辑:程序博客网 时间:2024/05/16 10:55
package com.henu.Decorator;/** * 汉堡基类 * @author rock */public abstract class Humburger {  protected  String name;      public String getName(){           return name;      }      public abstract double getPrice();    }package com.henu.Decorator;/** * 鸡腿堡类(被装饰者的初始状态,有些自己的简单装饰,相当于上面的Person) * @author rock */public class ChickenBurger extends Humburger{@Overridepublic double getPrice() {// TODO Auto-generated method stubreturn 10.0;}public ChickenBurger(){            name = "鸡腿堡";        } } package com.henu.Decorator;/** * 配料的基类(装饰者,用来对汉堡进行多层装饰,每层装饰增加一些配料,相当于上面Decorator) * @author rock * */public abstract class Condiment extends Humburger{public abstract String getName();}package com.henu.Decorator;/** * 生菜(装饰者的第一层,相当于上面的decorator_zero) * @author rock * */public class Lettuce extends Condiment{Humburger humburger;public Lettuce(Humburger humburger){this.humburger = humburger;}@Overridepublic String getName() {return humburger.getName();}@Overridepublic double getPrice() {return humburger.getPrice()+1.5;}}package com.henu.Decorator;/** * 辣椒(装饰者的第二层) * @author rock * */public class Chilli extends Condiment{Humburger humburger;        public Chilli(Humburger humburger){            this.humburger = humburger;    }@Overridepublic String getName() {// TODO Auto-generated method stubreturn humburger.getName()+"+辣椒";}@Overridepublic double getPrice() {// TODO Auto-generated method stubreturn humburger.getPrice(); //辣椒是免费的}} public class Test {public static void main(String[] args) { Humburger humburger = new ChickenBurger();         System.out.println(humburger.getName()+"  价钱:"+humburger.getPrice());         Lettuce lettuce = new Lettuce(humburger);         System.out.println(lettuce.getName()+"  价钱:"+lettuce.getPrice());         Chilli chilli = new Chilli(humburger);         System.out.println(chilli.getName()+"  价钱:"+chilli.getPrice());         Chilli chilli2 = new Chilli(lettuce);         System.out.println(chilli2.getName()+"  价钱:"+chilli2.getPrice());    }}鸡腿堡  价钱:10.0鸡腿堡  价钱:11.5鸡腿堡+辣椒  价钱:10.0鸡腿堡+辣椒  价钱:11.5

原创粉丝点击