在Java中验证Decorator模式的实现

时间:2015-02-15 10:43:16

标签: java design-patterns decorator

我正在学习设计模式的实施。以下是装饰器设计模式的实现。我想知道实施是否正确。如果可以改进或不正确,请告诉我。

interface Markable
{
    void mark();
}
class SingleMarker implements Markable
{

    @Override
    public void mark() {
        System.out.println("Single Marker");

    }
}
class MarkerDecorator implements Markable
{
    protected SingleMarker singleMarker;
    public MarkerDecorator(final SingleMarker singleMarker) {
        this.singleMarker = singleMarker;
    }
    @Override
    public void mark() {
        this.singleMarker.mark();
    }
}
class MultipleMarker extends MarkerDecorator
{
    private int numberOfMarks;
    public MultipleMarker(SingleMarker singleMarker) {
        this(singleMarker, 2);
    }
    public MultipleMarker(SingleMarker singleMarker, int numberOfMarks) {
        super(singleMarker);
        this.numberOfMarks = numberOfMarks;
    }
    @Override
    public void mark() {
        for (int i = 0; i < numberOfMarks; i++) {
            super.singleMarker.mark();
        }
    }

}
  • P.S。

    如果此问题不适合此论坛,请告知我们。

1 个答案:

答案 0 :(得分:2)

唯一的改进是针对接口进行编程而非实现

  1. MarkableSingleMarker中使用MarkerDecorator界面代替MultipleMarker
  2. 这也是MultipleMarker需要扩展MarkerDecorator而不是直接实现接口的问题。在你的情况下没有必要。