常见设计模式之【装饰模式】
装饰模式:顾名思义就是跟他加层层外套,或者说是给一个实体增加更多的形容词
请看demo让你一目了然,呵呵....你懂滴
package Decorator;/** *@Description: 装饰模式 *@author Potter *@date 2012-9-10 下午05:35:07 *@version V1.0 */public class App {/** * @param args */public static void main(String[] args) {Coffee coffee=new Tang(new Nai(new NaTie()));System.out.println("coffee's cost="+coffee.getCost());System.out.println("coffee's message="+coffee.getMessage());}}coffee类:
package Decorator;/** *@Description: 咖啡类 *@author Potter *@date 2012-9-10 下午05:21:35 *@version V1.0 */public interface Coffee {public float getCost();public String getMessage();}装饰核心类:
package Decorator;/** *@Description:装饰模式核心 *@author Potter *@date 2012-9-10 下午05:21:14 *@version V1.0 */public class Decorator implements Coffee{protected Coffee coffee;public Decorator(Coffee coffee){this.coffee=coffee;}@Overridepublic float getCost() {return coffee.getCost();}@Overridepublic String getMessage() {return coffee.getMessage();}}实体蓝山咖啡类:
package Decorator;/** *@Description: 蓝色咖啡 *@author Potter *@date 2012-9-10 下午05:25:46 *@version V1.0 */public class LanShan implements Coffee {@Overridepublic float getCost() {return 20f;}@Overridepublic String getMessage() {return "蓝山咖啡";}}实体拿铁咖啡类:
package Decorator;/** *@Description: 拿铁咖啡 *@author Potter *@date 2012-9-10 下午05:23:53 *@version V1.0 */public class NaTie implements Coffee {@Overridepublic float getCost() {return 10f;}@Overridepublic String getMessage() {return "拿铁咖啡";}}
装饰类奶:
package Decorator;/** *@Description:奶 *@author Potter *@date 2012-9-10 下午05:33:13 *@version V1.0 */public class Nai extends Decorator {public Nai(Coffee coffee) {super(coffee);}@Overridepublic float getCost() {return super.getCost()+5;}@Overridepublic String getMessage() {return "加奶的"+super.getMessage();}}
装饰类糖:
package Decorator;/** *@Description: 糖 *@author Potter *@date 2012-9-10 下午05:30:49 *@version V1.0 */public class Tang extends Decorator {public Tang(Coffee coffee) {super(coffee);}@Overridepublic String getMessage() {return "加糖的"+super.getMessage();}}运行结果:
coffee's cost=15.0
coffee's message=加糖加奶的拿铁咖啡
呵呵~ 很容易理解吧!