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 @   奶油冰激凌  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示