单一职责原则与开放闭合原则 单一职责原则是指一个类或模块只负责完成一个功能或职责。 具体来说,就是一个类或模块应该只有一个引起它变化的原因,也就是只有一个职责或功能,如果一个类或模块拥有多个职责或

单一职责原则与开放闭合原则

单一职责原则是指一个类或模块只负责完成一个功能或职责。
具体来说,就是一个类或模块应该只有一个引起它变化的原因,也就是只有一个职责或功能,如果一个类或模块拥有多个职责或功能,就容易产生耦合和复杂度,从而难以维护和扩展。
例如,一个图书馆管理系统中,图书馆管理员负责借还书,图书管理员就应该只处理借还书的职责,而不应该涉及到其他功能,比如维护图书馆的收入和支出情况等。 单一职责原则是面向对象设计中的一项基本原则,它可以提高系统的可维护性、可测试性和可扩展性,避免代码臃肿和复杂度高的问题,使代码更加清晰易懂。
开放闭合原则(Open Closed Principle,OCP)是指一个软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。
具体来说,一个模块的行为应该能够在不修改源代码的情况下被扩展,而且应该允许新的行为通过增加新的代码来实现。换句话说,当需要添加一些新的功能时,不应该修改现有的代码,而是应该通过添加新的代码来扩展原有的功能。这样做的好处是,可以保证现有的代码不被破坏或修改,使得系统更加稳定、可靠和易于维护。
例如,一个博客系统中,需要支持不同的文章类型,比如文本、图片、视频等。如果采用开放闭合原则,就应该定义一个文章类型的抽象基类或接口,然后针对每种类型实现一个具体的子类或实现类。这样,当需要添加新的文章类型时,只需要实现一个新的子类或实现类即可,而不需要修改现有的文章类型代码。
开放闭合原则是面向对象设计中的一个重要原则,它可以提高系统的灵活性、可扩展性和可维护性,使得系统更加易于修改和维护,也更容易适应变化。然而实现开放闭合原则并不容易,需要对系统进行适当的架构设计和模块划分,同时还需要理解和应用其他面向对象设计原则和模式。

针对需要添加绘制三角形功能的问题,可以通过遵循单一职责原则和开放闭合原则来实现。
首先,图形编辑器GraphicEditor类需要遵循单一职责原则,即一个类只负责完成一个功能或职责。因此,可以将矩形、圆形和三角形的绘制功能分别封装成单独的类,比如Rectangle、Circle和Triangle类,并让它们分别负责绘制对应的图形。
其次,为了遵循开放闭合原则,可以定义一个抽象的Shape类或接口,让Rectangle、Circle和Triangle类都实现这个接口。这样,当需要添加新的图形时,只需要实现一个新的类并实现Shape接口,而不需要修改现有的代码。
最终,GraphicEditor类只需要负责调用每个图形类的绘制方法即可,如下所示:
其中,GraphicEditor类负责调用各个图形类的绘制方法,而Rectangle、Circle和Triangle类分别负责绘制对应的图形。
同时,这三个具体图形类都实现了抽象的Shape接口,以便于系统的扩展和维护。
通过遵循单一职责原则和开放闭合原则,我们能够使系统更加灵活、可扩展和易于维护,从而提高系统的质量和可靠性。
同时,我们还可以借鉴其他面向对象设计原则和模式,比如依赖倒置原则、组合模式、工厂模式等,以进一步提高系统的设计和实现水平。
public class GraphicEditor {
public void drawRectangle(Rectangle r) {
r.draw();
}
public void drawCircle(Circle c) {
c.draw();
}
public void drawTriangle(Triangle t) {
t.draw();
}
}
这样就能实现添加新的三角形绘制功能而不需要修改现有代码,同时也遵循了单一职责原则和开放闭合原则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值