我对七大设计原则的理解

设计原则是在大量工程实践的基础上和科学研究的基础上总结出来的经验和理念,我们在设计代码和编码的锅中中尽量多借鉴前人的经验和理念,尽可能的少走弯路,这就是设计原则的意义所在。但是我们在设计代码和编码的过程中可以不遵循设计原则吗?很显然,答案是可以的,因为设计原则不会有Java、C++等编程语言语法的硬性要求,在代码编译时不会去校验使用设计原则与否,程序一样会去运行。设计原则是一种思想,一种理念、一种编码的风格!

1)单一职责原则:一个方法、模块、类只干一件事,也可以说对于一个类而言只有一个引起它变化的原因。

      优点:避免模块函数或者方法发生变化时,影响其他类,降低了耦合度。

2)开闭原则:对于一个实体(类、函数、模块)而言,对内修改关闭,对外扩张开放。

      原因:新功能经常有,可以添加代码,但是不能对已有的功能做修改。

      实现方法: 面向接口编程,提供一个固定的接口,若想添加新功能,则去实现该接口。

3) 依赖倒置原则:比较高大上的说法就是:高层模块不依赖低层模块,二者都应该都依赖抽象,抽象不应该依赖细节,细节应该依赖于抽象。这种高大上的说法不太好理解,下面我来解释一下,什么是高层模块和低层模块呢?高层模块就是服务的调用方,低层模块就是服务的提供方,在编程届有个不争的事实:抽象代码一般不会发生变化,经常发生变化的是具体的实现类。高层模块不依赖于低层模块的含义就是高层模块不会随着低层模块的变化而变化,说的通俗一些就是服务的调用方不会随着服务的提供方的变化而发生变化,很显然若服务的调用方只依赖于接口,则只要接口不发生变化,则服务的调用方就不会发生变化。说一千道一万,依赖倒置的原则就是面向接口编程!

4)接口隔离原则:依赖多个单一的接口,而不是依赖一个具备多余功能的总接口。为了便于理解,我们简单举个例子:现在有个总的接口Ianimal,它里面包含了各种动物的方法,什么天上飞的,地上跑的,水里游的都包括。现在有个Bird类实现了ianimal接口,虽然它具备了飞的能力,但是同时它也具备了地上跑,水力游等多余能力,很显代码显得很臃肿,为了解决这个为题,应该讲ianimal接口拆分为Flyianimal、Runianimal、Swamianimal子接口,这样Bird类只需要实现Flyianimal接口就OK了。

5)迪米特原则:又称为最少知道原则,一个类要和它的“直接朋友”讲话,不要和陌生人讲话.那么什么是“直接朋友”呢,“直接朋友”就是成员变量所属的类,以及类中方法的入参。

6)里式替换原则:若用子类完全替换父类,则应保持父类的行为保持不变。具体应包含以下几点:

    1.子类不能复写父类的方法

     2.子类可以实现父类的抽象方法,也可以添加新的方法

     3.子类若重载父类方法时,则方法的入参应该比父类宽松

     3.子类若重载父类的方法时,则返回值的类型比父类更为严格

7)合成复用原则

 

         

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值