我正在学习设计模式的实现。以下是装饰器设计模式的实现。我想知道实施是否正确。让我知道它是否可以改进或不正确。

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

}



附言

如果这个问题不适合这个论坛,请告诉我。

最佳答案

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


使用Markable界面代替SingleMarkerMarkerDecorator中的MultipleMarker
这也是为什么MultipleMarker需要扩展MarkerDecorator而不是直接实现接口的问题。如果您的情况是没有必要的。

08-04 07:55