Javaのデザインパターンのデコレータ

  • Decoratorパターンの役割

    元のコア機能、強化機能を変更せずにオブジェクトの場合。

  • オブジェクトの機能を強化する方法
  1. このような修理などの操作性を向上させる方法によって、親オブジェクトクラスの継承は、親クラス、ホットロッド、スポーツカーライトの増加、修正車、セダン車プラス専用映画館です。図:理由は、ビジネスにおけるサージの複雑な装飾を行うにはこの方法で

    

   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();
    }
}

测试结果:

 

总结:装饰模式在不改变原先核心功能的情况下,可以实现增强,并且不会产生很多继承类,按照业务模块划分,通过不同的方法进行装饰。

 

おすすめ

転載: www.cnblogs.com/blogxiao/p/11206509.html