代码设计:设计原则

文章目录

六个设计原则

1.单一职责原则

一个类只负责一项职责,即只封装一种功能的代码或只封装一种变化原因的代码

不止是类,方法、模块、组件、插件都应该遵守这个原则

2.开闭原则

对扩展开放,对修改关闭

用依赖抽象替换依赖具体,即使用扩展去减少修改

3.里氏替换原则

多态,也可以理解为使用派生类替换基类

使用基类引用调用方法时,应该使用派生类可重写的方法,这样才能实现多态

4.接口隔离原则

可以理解为接口的单一职责原则,接口封装单一功能的抽象方法

如果一个接口封装多个功能的抽象方法,但一个类只需要实现其中的一个抽象方法,但因为实现该接口,不得不实现其他抽象方法

5.依赖反转/倒置原则

类A依赖类B,如果类B想要调用类A的方法

1.不能直接让类B依赖类A(类B持有一个类A的引用),这样容易导致内存泄露

2.应该使用依赖反转,类A持有一个内部类的实例对象,在内部类中调用外部类的方法,把它传给类B,类B调用内部类的方法,这样间接调用类A的方法

6.迪米特原则

最少依赖

类A依赖类B
1.类B要尽可能的隐藏细节,尽可能少的提供公开方法
2.类A避免不必要的调用,尽可能少的调用类B的方法

总结

对封装的要求

要求一:封装单一功能、单一变化的代码

无论是方法、类、接口,还是模块,都要求封装单一功能、单一变化的代码,这样做的好处:

1.单一变化可以减小变化的影响范围

2.单一功能更有利于复用

符合该要求的原则:单一职责原则和接口隔离原则,对类和接口的要求

要求二:隐藏细节

在类中的私有方法中,封装具体的实现代码,私有方法只会在该类中调用,不会被其他类中调用,这样做可以隐藏细节

在类中的公开方法,调用私有方法,公开方法通过依赖该类,可以使其他类调用该方法

符合该要求的原则:迪米特原则

对依赖的要求

要求一:最少依赖

类A依赖类B
1.类B要尽可能的隐藏细节,尽可能少的提供公开方法
2.类A避免不必要的调用,尽可能少的调用类B的方法

符合该要求的原则:迪米特原则

要求二:尽量用依赖抽象替换依赖具体

符合该要求的原则:开闭原则,扩展需要依赖抽象(抽象包括基类、接口)

要求三:依赖反转/倒置

类A依赖类B,如果类B想要调用类A中的方法,不能让类B也依赖类A,而是要类A持有一个内部类的实例对象,在内部类中调用外部类的方法,把它传给类B,类B调用内部类的方法,这样间接调用类A的方法

对多态中使用依赖抽象的要求

要求一:如果依赖的是基类,那么必须调用基类中的可重写方法

符合该要求的原则:里氏替换原则

总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值