༺༽༾ཊ—设计-七个-01-原则-模式—ཏ༿༼༻

文章讲述了如何通过遵循单一职责原则,将图形类中的功能拆分,引入抽象基类Shape,以提高代码的可扩展性和清晰度。通过实例演示了如何优化图形绘制,避免代码冗余和职责不明确,确保在添加新形状如三角形时仅需少量改动。
摘要由CSDN通过智能技术生成

第一原则:单一职责

        一个类只负责一个功能领域中的相应职责;

接下来我们举一个代码例子,主要的功能实现是:

        在主函数中运行调用描边工具和填充工具画矩形与圆形

首先写一个圆形类,里面只有一个方法用来返回string类型的"圆形"

再拓展一个矩形类,同样里面只有一个方法用来返回string类型的"矩形"

再写一个枚举类,用来存放两个子类,变向作为基类

写一个画图的工具类,里面有两个方法实现"描边"和"填充"两个功能

最后主函数调用类

运行实现:

虽然实现了功能,但第一违反了七个原则中的单一原则

        代码中if里做了一件事情,else if也做了一件事情,也就是Stroke这个方法已经做了两件事情,同样Fill方法也做了两件事情,这样职责就不单一了。

        代码中不仅违反了单一职责,而且在Stroke方法和Fill方法中出现了两次创建矩形实例,出现了代码冗余。

接下来我们对Graphics类进行一些优化:

        这里我们将创建对象实例提取,并且把每一个功能只写成一个方法,从而实现单一职责。

但这样虽然满足了单一职责,扩展性却不是很好,也就是说比如我们需要扩展添加(new)一个三角形类,不仅需要在Graphics类中提取创建一个三角形类,还要新增两个方法(StrokeTriangle与FillTriangle)

如果想解决这种难于拓展的问题,我们可以进行以下优化:

我们可以新增抽象基类Shape

修改两个子类继承Shape基类

修改Graphics类:

        这样写既满足了单一职责(一个方法一个功能)也同时满足了可拓展性(因为Stroke方法和Fill方法只接收形状类型,去完成功能,也就是说不管哪种类型传进来我都执行,这样如果再写一个三角形类,需要让三角形描边或者填充时,就不用再写三角形填充方法和三角形描边方法了,只需要把新增的三角形类传进描边方法和填充方法即可)。

最后修改主函数调用类

运行同样实现了功能,但符合了七个原则中的单一原则,并且提高了代码的可拓展性。

这样扩展一个三角形类不需要修改其他类,只需要添加三角形类后在主类中调用即可。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值