本文共 2215 字,大约阅读时间需要 7 分钟。
package com._test.decorator;/** * 抽象组件:定义一个抽象接口,来规范准备附加功能的类 */public interface Person { void eat() ;}
package com._test.decorator;/** * 具体组件:将要被附加功能的类,实现抽象组件接口 */public class Man implements Person { public void eat() { System.out.println("一个人准备吃饭"); }}
package com._test.decorator;/** * 抽象装饰者:持有对具体组件的引用,并实现抽象组件的接口 */public abstract class Decorator implements Person { protected Person person; public void setPerson(Person person) { this.person = person; } public void eat() { person.eat(); }}
package com._test.decorator;/** * 具体装饰:继承抽象装饰者角色,负责对具体组件添加额外功能 */public class Decorator_A extends Decorator { @Override public void eat() { super.eat(); eat_A(); } /** * 额外功能 */ public void eat_A() { System.out.println("_A_吃排骨"); }}
package com._test.decorator;/** * 具体装饰:继承抽象装饰者角色,负责对具体组件添加额外功能 */public class Decorator_B extends Decorator { @Override public void eat() { super.eat(); eat_b(); } /** * 额外功能 */ public void eat_b() { System.out.println("_b_吃烤翅"); }}5)、客户端启动类,代码如下:
package com._test.decorator;public class Main { public static void main(String[] args) { Person person = new Man(); Decorator_A da = new Decorator_A(); Decorator_B db = new Decorator_B(); da.setPerson(person); db.setPerson(da); db.eat(); }}