- Decoratorパターンの役割
元のコア機能、強化機能を変更せずにオブジェクトの場合。
- オブジェクトの機能を強化する方法
- このような修理などの操作性を向上させる方法によって、親オブジェクトクラスの継承は、親クラス、ホットロッド、スポーツカーライトの増加、修正車、セダン車プラス専用映画館です。図:理由は、ビジネスにおけるサージの複雑な装飾を行うにはこの方法で
2.装飾的なパターンは、メソッドを強化します。フィギュア
- 装飾的なパターンのアーキテクチャ
車:抽象クラスの装飾
パッケージjavadesign.decorate; / ** *抽象車 * / パブリック・ インタフェースカー{ 公共 空buildCar(); }
benCar:飾ら実装
パッケージjavadesign.decorate。 パブリック クラス BenCarは実装カー{ @Override 公共 無効buildCar(){ System.out.printlnは( "建造一辆车" ); } }
デコレータ:装飾クラス
package javadesign.decorate; public class Decorator implements Car { public Car car; public Decorator(Car car){ this.car=car; } @Override public void buildCar() { this.car.buildCar(); } }
StrongDecorator:装饰的实现
package javadesign.decorate; public class Decorator implements Car { public Car car; public Decorator(Car car){ this.car=car; } @Override public void buildCar() { this.car.buildCar(); } }
Client:测试类
package javadesign.decorate; public class Client { public static void main(String[] args) { Car car=new BenCar(); Decorator decorator=new StrongDecorator(car); ((StrongDecorator) decorator).buildSportsCar(); ((StrongDecorator) decorator).buildHouseCar(); } }
测试结果:
总结:装饰模式在不改变原先核心功能的情况下,可以实现增强,并且不会产生很多继承类,按照业务模块划分,通过不同的方法进行装饰。