9.11

[实验任务三]:依赖倒转原则与合成复用原则

在一画图软件中提供了多种大小不同的画笔,并且可以给画笔指定不同的颜色,某设计人员对画笔进行了如上图所示的设计。通过分析,可以发现增加画笔的种类和颜色会使得系统中类的数目急剧增加,请根据合成复用原则和依赖倒转原则对上述设计进行重构。

实验要求:

1. 提交源代码;

1.Pen.java
public abstract class Pen {
    protected Color color;
    protected Size size;

    public Pen(Color color, Size size) {
        this.color = color;
        this.size = size;
    }

    public abstract void draw();
}

2.Color.java
public interface Color {
    String getColor();
}

3.具体颜色实现
public class Red implements Color {
    @Override
    public String getColor() {
        return "Red";
    }
}

public class Green implements Color {
    @Override
    public String getColor() {
        return "Green";
    }
}

4.Size.java
public interface Size {
    String getSize();
}

5.具体大小实现
public class Small implements Size {
    @Override
    public String getSize() {
        return "Small";
    }
}

public class Middle implements Size {
    @Override
    public String getSize() {
        return "Middle";
    }
}

public class Big implements Size {
    @Override
    public String getSize() {
        return "Big";
    }
}

6.具体的 Pen 实现类
public class BrushPen extends Pen {
    public BrushPen(Color color, Size size) {
        super(color, size);
    }

    @Override
    public void draw() {
        System.out.println("Drawing with " + size.getSize() + " " + color.getColor() + " Pen.");
    }
}

7.Main.java
public class Main {
    public static void main(String[] args) {
        Pen smallRedPen = new BrushPen(new Red(), new Small());
        smallRedPen.draw(); // 输出: Drawing with Small Red Pen.

        Pen bigGreenPen = new BrushPen(new Green(), new Big());
        bigGreenPen.draw(); // 输出: Drawing with Big Green Pen.
    }
}

2.画出重构后的类图。

 

posted @ 2024-12-03 16:39  奶油冰激凌  阅读(23)  评论(0)    收藏  举报