面向对象的四个基本特征和七大设计原则

复习一哈~

基本特征
抽象
将一些事物的共性抽离出来归为一个类。

如对于动物,具有生命体征、活动能力等区别于其它事物的共同特征

封装
有选择地隐藏和暴露数据和方法

比如有U盘这个类,我希望隐藏内部组成和实现,只暴露USB接口以供使用

继承
子类可以直接使用父类的部分数据和方法,可以有选择的扩展

比如鸟是动物,但鸟扩展了飞行的能力。

多态
同一类的对象调用相同方法可以表现出不同的行为

比如动物实现了say()方法,猴子、马等动物重写了say()方法来表现不同的交流语言。

设计原则
单一职责原则
一个类应该仅有一个引起它变化的原因 
如果一个类承担的职责过多,那么这些职责就会相互依赖,一个职责的变化可能会影响另一个职责的履行。

比如andoird里的Canvas负责图形布局,Paint负责绘制风格。如果合为一个类,比如传入颜色,坐标,形状来绘制图形,当添加透明度等功能时,所有绘制图形的方法都需要修改,而分开之后只需修改Paint类。

开放封闭原则
对扩展开放,对更改封闭。 
为一个软件系统增加新功能时,只需要从原来的系统派生出一些新类就可以,不需要修改原来的任何一行代码。

里氏替换原则
子类必须能够替换任何地方的父类 
比如玩具枪继承枪,但在战争中无法代替枪用于攻击

合成/聚合原则
尽量使用合成/聚合而不使用类继承

比如把”总监”,”经理”,”学生”当成”人”的子类。错误在于把”职位”和”人”的等级结构混淆了。一个人可以同时拥有多个职位。如果按继承来设计,一个人只能有一个职位,而且无法再改变。 
正确的是建立抽象类”职位”,”总监”,”经理”,”学生”是”职位”的子类,”人”可以拥有多个”职位”。

迪米特法则(最少知道原则)
一个对象应当对其他对象有尽可能少的了解

比如你去买一辆车,给钱就行,不需要知道车是怎么生产的。

依赖倒置原则
让高层模块不直接依赖低层模块

若高层模块A直接依赖低层模块B,假如要将A改为依赖C,则必须修改A的代码。而将A修改为依赖接口I,更换底层模块时只需实现接口I

接口隔离原则
一个接口只应该描述一种能力

例如,琴棋书画应该设计为四个接口,而不是一个接口中的四个方法,因为琴棋书画四样都精通的人还是少数,如果按能力分开,会几个就实现几个接口,会使每个接口更好地被复用
--------------------- 
作者:qazwyc 
来源:CSDN 
原文:https://blog.csdn.net/qazwyc/article/details/78005613?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/qq_37788558/article/details/83097921