设计模式六大原则

1.开闭原则。

一个软件实体,如类,模块和函数应该对外扩展开发,对内修改关闭。

解读:用抽象构建框架,用实现扩展细节。不以改动原有类的方式来实现新需求,而是应该以实现事先抽象出来的接口(或具体类继承抽象类)的方式来实现。

优点:开闭原则的优点在于可以在不改动原有代码的前提下给程序扩展功能。增加了程序的可扩展性,同时也降低了程序的维护成本。

2.单一职责原则。

一个类只允许有一个职责,即只有一个导致该类变更的原因。

解读:类职责的变化往往就是导致类变化的原因:也就是说如果一个类具有多种职责,就会有多种导致这个类变化的原因,从而导致这个类的维护变得困难。往往在软件开发中,随着需求的不断增加,可能会给原来的类添加一些本来不属于它的一些职责,从而违反了单一职责原则。如果我们发现当前类的职责不仅仅有一个,就应该将本来不属于该类真正的职责分离出去。不仅仅是类,函数也要遵循单一职责原则,即一个函数制作一件事情。如果发现一个函数里面有不同的任务,则需要将不同的任务以另一个函数的形式分离出去。

优点:如果类与方法的职责划分的很清晰,不但可以提高代码的可读性,更实际性地更降低了程序出错的风险,因为清晰的代码会让bug无处藏身,也有利于bug的追踪,也就是降低了程序的维护成本。

3.依赖倒置原则。

依赖抽象而不是依赖实现。抽象不应该依赖细节,细节应该依赖抽象。高层模块不能依赖低层模块,二者都应该依赖抽象。

解读:针对接口编程,而不是针对实现编程。尽量不要从具体的类派生,而是以继承抽象类或实现接口来实现。关于高层模块与低层模块的划分可以按照决策能力的高低进行划分。业务层自然就处于上层模块,逻辑层和数据层自然就归类为底层。

优点:通过抽象来搭建框架,建立类和类的关联,以减少类间的耦合性。而且以抽象搭建的系统要比以具体实现搭建的系统更加稳定,扩展性更高,同时也便于维护。

4.接口分离原则。

多个特定的客户端接口要好于一个通用性的总接口。

解读:客户端不应该依赖它不需要实现的接口。不建立庞大臃肿的接口,应尽量细化接口,接口中的方法应尽量少。需要注意的是接口的力度也不能太小,如果过小,则会造成接口数量过多,使设计复杂化。

优点:避免同一个接口里面包含不同类职责的方法,接口责任划分更加明确,符合高内聚低耦合的思想。

5.迪米特法则

一个对象应该对尽可能少的对象有接触,也就是只接触那些真正需要接触的对象。

解读:迪米特法则也叫做最少知道原则,一个类应该只和它的成员变量,方法的输入,返回参数中的类作交流,而不应该引入其他的类(间接交流)。

优点:实践迪米特法则可以良好地降低类与类之间的耦合,减少类与类之间的关联程度,让类与类之间的协作更加直接。

6.里氏替换原则。

所有引用基类的地方必须能透明地使用其子类的对象,也就是说子类对象可以替换其父类对象,而程序执行效果不变。

解读:在继承体系中,子类中可以增加自己特有的方法,也可以实现父类的抽象方法,但是不能重写父类的非抽象方法,否则该继承关系就不是一个正确的继承关系。

优点:可以检验继承使用的正确性,约束继承在使用上的泛滥。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计模式是软件设计中常用的最佳实践,它们是解决常见问题和复用已验证解决方案的经验总结。六大原则是 SOLID 原则,这些原则有助于编写可扩展、灵活且易于维护的代码。以下是 SOLID 原则及其优点: 1. 单一职责原则(Single Responsibility Principle, SRP): 每个类只做一件事,使其更易于测试和理解。优点是提高了模块的独立性和重用性。 2. 开闭原则(Open-Closed Principle, OCP): 对扩展开放,对修改关闭。通过接口或抽象类,可以在不修改原有代码的情况下增加新功能。这增强了系统的灵活性。 3. 里氏替换原则(Liskov Substitution Principle, LSP): 子类可以替换其基类而不会影响程序的正确性。确保子类继承的行为是一致的,有利于代码的可替换和适应变化。 4. 接口隔离原则(Interface Segregation Principle, ISP): 尽可能细化接口,避免大量无关的抽象方法,提高代码的可定制性。 5. 依赖倒置原则(Dependency Inversion Principle, DIP): 高层模块不应该依赖低层模块,两者都应依赖抽象。这样有利于模块间的解耦和测试。 6. 里氏替换原则(Liskov Substitution Principle, LSP,我在上一条已经提到了,这是个笔误,实际是单一职责原则,SOLID中有四个原则,没有LSP)。 遵循这些原则能帮助开发者编写出清晰、灵活、易于理解和维护的代码,提高团队协作效率,并且有助于项目的长期可持续发展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值