JAVA设计模式的七大原则

设计模式的目的:

1)代码重用性(相同功能的代码,不用多次编写)

2)可读性(编程规范性,使代码易于阅读和理解)

3)可拓展性(也称作可维护性,当需要增加功能时,十分方便)

4)可靠性(增加新的功能后,对以前的功能没有影响)

5)使程序呈现高内聚、低耦合的特性

设计模式的七大原则:

    设计模式原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模式的基础(即:设计模式为什么要这样设计,设计模式这样设计的依据)

 

JAVA设计模式常用的七大原则:

1)单一职责原则

    对于类来说,一个类应该只负责一个职责

    例:Dao类实现了对user表的增删改查 和对order表的增删改查   【Dao类不满足单一指责原则】

    可以把Dao类拆为UserDao类(操作user表) 和 OrderDao类(操作order表)  【UserDao和OrderDao满足单一指责原则】

 

2)接口隔离原则

    客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

    我的理解:接口隔离原则【目的是降低耦合】是为了避免实现不需要的方法,导致代码臃肿

用一个比较形象的比喻:

    去面馆吃面,拌面的调料,有:盐、油、酱、醋、香菇;
    第一种方式(传统方式):Interface1就是5种调料。C类和D类是Interface1的实现类,里面也必须有5种调料。但是我拌面的时候,不一定5种调料都需要,假如我只需要盐和油,那么剩下的三种调料就是多余的。不仅是多余的,还有可能带来问题。假如明天,老板把香菇换成了青菜,那么意味着C类和D类也要跟着变化。。。本来我拌面只是需要盐和油,香菇换不换青菜跟我没有半点关系,为什么还要改变呢?这就是问题。
    第二种方式(遵循接口隔离原则):将5种调料分开,我想要加哪个就加哪个,就算老板将其中一种换了(比如香菇换青菜),如果我还是只需要加油和盐,那么香菇换青菜就和我没关系,我也没必要改变。这样类与类之间的耦合性也降低了。
 

3)依赖倒转原则

    高层模块不应该依赖低层模块,二者都应该依赖其抽象
    抽象(接口/抽象类)不应该依赖细节(类),细节应该依赖抽象
    依赖倒转(倒置)的中心思想是面向接口编程
    依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在java中,抽象指的是接口或抽象类,细节就是具体的实现类。
    使用接口或抽象类的目的是:制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。

依赖关系的三种传递方式:1、接口   2、setter   3、构造方法

我的理解:在开发过程中尽可能的依赖抽象层(接口/抽象类)而不是依赖实现层(类),即面向接口编程

4)里式替换原则

我的理解:所有引用基类的地方必须能透明地使用其子类的对象,避免子类重写父类的方法

5)开闭原则

开闭原则(Open Closed Principle)是编程中最基础、最重要的设计原则。

在面向对象编程领域中,开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。该特性在产品化的环境中是特别有价值的,在这种环境中,改变源代码需要代码审查,单元测试以及诸如此类的用以确保产品使用质量的过程。遵循这种原则的代码在扩展时并不发生改变,因此无需上述的过程

 

6)迪米特法则

迪米特法则只是要求降低类间(对象间)耦合关系,并不是要求完全没有依赖关系。

核心:降低类之间的耦合

7)合成复用原则

 

 

总结:这 7 种设计原则是软件设计模式必须尽量遵循的原则,各种原则要求的侧重点不同。

  • 开闭原则是总纲,它告诉我们要对扩展开放,对修改关闭;

  • 里氏替换原则告诉我们不要破坏继承体系;

  • 依赖倒置原则告诉我们要面向接口编程;

  • 单一职责原则告诉我们实现类要职责单一;

  • 接口隔离原则告诉我们在设计接口的时候要精简单一;

  • 迪米特法则告诉我们要降低耦合度;

  • 合成复用原则告诉我们要优先使用组合或者聚合关系复用,少用继承关系复用。

 

对于7大原则我的理解:面向对象编程思想、高内聚、低耦合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值