
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
软件编程开发原则的学习和使用是每一位程序员都需要熟练掌握的一个编程知识点,而本文我们就通过案例分析来简单了解一下,软件开发设计原则应用分析。
单一职责原则(SRP)
单一职责原则(SRP)表明一个类有且只有一个职责。一个类就像容器一样,它能添加任意数量的属性、方法等。然而,如果你试图让一个类实现太多,很快这个类就会变得笨重。任意小的改变都将导致这个单一类的变化。当你改了这个类,你将需要重新测试一遍。如果你遵守SRP,你的类将变得简洁和灵活。每一个类将负责单一的、任务或者它关注的点,这种方式你只需要改变相应的类,只有这个类需要再次测试。SRP核心是把整个分为小部分,并且每个小部分都将通过一个单独的类负责。
假设你在构建一个应用程序,其中有个模块是根据条件搜索顾客并以Excel形式导出。随着业务的发展,搜索条件会不断增加,导出数据的分类也会不断增加。如果此时将搜索与数据导出功能放在同一个类中,势必会变的笨重起来,即使是微小的改动,也可能影响其他功能。所以根据单一职责原则,一个类只有一个职责,故创建两个单独的类,分别处理搜索以及导出数据。
开放封闭原则(OCP)
开放封闭原则(OCP)指出,一个类应该对扩展开放,对修改关闭。这意味一旦你创建了一个类并且应用程序的其他部分开始使用它,你不应该修改它。为什么呢?因为如果你改变它,很可能你的改变会引发系统的崩溃。如果你需要一些额外功能,你应该扩展这个类而不是修改它。使用这种方式,现有系统不会看到任何新变化的影响。同时,你只需要测试新创建的类。
里氏替换原则(LSP)
里氏替换原则指出,派生的子类应该是可替换基类的,也就是说任何基类可以出现的地方,子类一定可以出现。值得注意的是,当你通过继承实现多态行为时,如果派生类没有遵守LSP,可能会让系统引发异常。所以请谨慎使用继承,只有确定是“is-a”的关系时才使用继承。
接口隔离原则(ISP)
接口隔离原则(ISP)表明类不应该被迫依赖他们不使用的方法,也就是说一个接口应该拥有尽可能少的行为,它是精简的,也是单一的。
假设你正在开发一个电子商务的网站,需要有一个购物车和关联订单处理机制。你设计一个接口IOrderProcessor,它用包含一个验证信用卡是否有效的方法(ValidateCardInfo)以及收件人地址是否有效的方法(ValidateShippingAddress)。与此同时,创建一个OnlineOrderProcessor的类表示在线支付。
这非常好,你的网站也能正常工作。现在让我们来考虑另一种情形,假设在线信用卡支付不再有效,公司决定接受货到付款支付。
乍一看,这个解决方案听起来很简单,你可以创建一个CashOnDeliveryProcessor并实现IOrderProcessor接口。货到付款的购买方式不会涉及任何信贷卡验证,所以,CashOnDeliveryOrderProcessor类内部的ValidateCardInfo方法抛出NotImplementedException。
这样的设计在未来可能会出现的潜在。假设由于某种原因在线信用用卡付款需要额外的验证步骤。自然,IOrderProcessor将被修改,它将包括那些额外的方法,于此同时OnlineOrderProcessor将实现这些额外的方法。然而,CashOnDeliveryOrderProcessor尽管不需要任何的附加功能,但你必须实现这些附加的功能。显然,这违反了接口隔离原则。