装饰者模式
动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则。
动态的给一个对象添加一些额外的功能,就增加功能来说,装饰模式比生成子类更为灵活。
实现
// 声明一个机器人接口,定义一个方法interface Robot{void doSomething();}// 被装饰的类class FirstRobot implements Robot{@Override// 第一代机器人public void doSomething() {System.out.println("第一代机器人会唱歌");System.out.println("第一代机器人会对话");}}class RobotDecorator implements Robot{private Robot robot;// 使用构造方法传一个机器人对象就行了public RobotDecorator(Robot robot) {this.robot = robot;}@Overridepublic void doSomething() {robot.doSomething();}/*** 这个方法就是可以做第一代机器人做的事* 同时还有新添加的功能*/public void doMoreThing(){robot.doSomething();System.out.println("第二代机器人还会跳舞");}}public static void main(String[] args) {// new 一个装饰器类,传入需要装饰的对象就行了new RobotDecorator(new FirstRobot()).doMoreThing();}
