你知道哪些面向对象设计的原则|法则

最常用的7种设计原则:

  • 单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责

    举例说明:设计俄罗斯方块游戏,把游戏界面和逻辑进行分离。当有一天需要改变界面的时候,不过是窗体类的变化,和游戏逻辑无关,以此来达到复用的目的。
  • 开闭原则(Open-Closed Principle, OCP):软件实体应对扩展开放,对修改关闭

    举例说明:当设计一个具有加、减、乘、除功能的计算器的时候,通过一些面向对象的手段,如继承,多态等来隔离具体加法、减法等与客户端的耦合。当后续需要增加其他功能,比如开根号等,就不需要再去更改客户端以及加法、减法等类了,而只是增加开根号类就可以了。
  • 里氏替换原则(Liskov Substitution Principle, LSP):所有引用基类的地方都可以透明的使用字类代替。

    举例说明:在面向对象设计时,一个是鸟类,一个是企鹅类,如果鸟类是可以飞的,企鹅不会飞,那么企鹅可以继承鸟类吗?答案是显然不行,因为继承意味着子类拥有父类所有非private的行为和属性,而在这里,企鹅不能以父类——鸟的身份出现(不满足依赖倒转原则),所以,企鹅不能继承鸟类。
  • 依赖倒置原则(Dependence Inversion Principle, DIP):抽象不应该依赖于细节,细节应该依赖于抽象

    举例说明:比如当我们做新项目时,发现业务逻辑的高层模块都是一样的,但是客户却希望使用不同的数据库或存储信息方式。我们希望能再次利用这些高层模块,但是如果高层模块都是与低层的访问数据库绑定在一起,就没有办法复用这些高层模块。而如果不管高层模块还是低层模块,它们都依赖于抽象,具体一点就是接口或抽象类,只要接口是稳定的,那么任何一个的更改都不用担心其他受到影响。
     
  • 接口隔离原则(Interface Segregation Principle, ISP):使用多个专门的接口,而不是一个单一的总接口
  • 合成复用原则(Composite Reuse Principle, CRP):尽量使用对象组合,而不是使用继承来达到复用的目的。组合大于继承。
  • 迪米特法则(Law of Demeter, LoD):一个软件实体应该尽可能少的与其它软件实体发生相互作用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值