六大原则--设计模式

前言:说到设计模式,自然少不了对六大原则的介绍。学习六大原则可以帮助我们在编程的时候更加方便,从而更好的掌握编程的思想。

(一)单一职责原则(Single Responsibility Principle, SRP)

1.是什么

就一个类而言,应该仅有一个引起它变化的原因。

2.优点

形式简单,便于理解。适合需求明确,且不易变动的情况。

3.缺点


需求改变时,不能及时应对;耦合度高,不能复用,缺乏灵活性且不易维护。

*应用场景


照相机的功能要比手机里面的拍照功能更加强大。因为照相机是专业用来拍照的,设计的时候能够专注于拍照这一个功能。
而手机由于功能非常多,拍照的效果就大大降低了。

(二)开放-封闭原则(Open-Closed Principle, OCP)

1.是什么

软件实体(类、模块、函数等)应该可以扩展,但是不能修改。
特征:对于扩展是开放的,对于更改是封闭的。

2.优点

可维护、可扩展、可复用、灵活性好。

3.缺点

对于应用程序中的每个部分都刻意地进行抽象会过犹不及。

*应用场景

每当大学生毕业的时候,就面临考研还是工作的问题。在这个选择上非常纠结,但又不想丢掉其中任何一个。这个时候,就用到了开放-封闭原则。我们考研的目的是为了更好的工作,所以说工作室不变的,而考研是扩展的,明确了这一点。我们就可以毕业之后,先去工作,同时不妨其考研。如果考研失败,工作也不会丢到。

(三)依赖倒转原则(Dependency Inversion Principle, DIP)

1.是什么

高层模块不应该依赖底层模块。两个都应该依赖抽象。
抽象不应该依赖细节。细节应该依赖抽象。

2.优点

高层模块低层模块,都依赖于抽象,就是接口或抽象类,只要接口稳定,任何一个更改都不会受到其他影响。
因此无论是高层模块还是低层都可以很容易地被复用。

3.缺点

接口或抽象改变时,会对整个程序受到影响。

*应用场景

世界由多个国家组成,然而国家发生争端的时候,只需要通过联合国,就可以解决各个国家共同认可的争端解决机制,从而更好的维护世界和平。

(四)里氏替换原则(Liskov Substitution Principle, LSP)

1.是什么

子类型必须能够替代掉它们的父类型

2.优点

可以轻松的实现代码的复用。正式有了里氏替代原则,才使得开放-封闭原则成了可能。

3.缺点

只有在子类可以替换掉父类,软件单位的功能才不会受到影响时,父类才能真正被复用。
子类只能在父类的基础上,增加新的功能。不能脱离父类。

*应用场景

猫可以集成动物类, 猫可以吃、喝、跑、叫,当某一天我们需要狗、牛等其他动物的时候,由于它们都继承了动物类,所以除了更改实例化的方法,其他都不需要修改。

(五)迪米特法则(LeastKnowledge Principle, LKP)

1.是什么

如果两个类不必彼此通信,那么这两个类就不应当直接的相互作用。
如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

2.优点

实现了类之间的低耦合,使得代码能够更加轻松的被复用和修改。

3.缺点

会在系统里造出大量的小方法,散落在系统的各个角落。

*应用场景

父亲开了一家餐馆,然而送餐的时候不一定让父亲送到客户手里,这个可以由送餐员去派送。

(六)接口隔离原则

1.是什么

接口隔离原则(Interface  Segregation Principle, ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

2.优点

使得方法能够充分的得到利用,提高使用效率。

3.缺点

接口的设计粒度越小,系统越灵活。但是灵活的同时也带来了结构复杂,开发难度大,可维护性降低。
所以接口设计应该注意度。

应用场景

猫和狗都可以叫,但是只有猫可以爬树,这时候,就可以让狗之应用叫的接口,不应用会爬树的接口。

总结:其实六大原则都是有思想的,学会在不同的情况下应用不同的原则,从而使得编程更加轻松快乐。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值