03月21, 2019

【朝花夕拾】类

”群主,我看你类那一节一脸懵逼!”

我在写类那一节的时候站在了一个有面向对象编程基础的程序员的角度在写,忽略了尚未接触过面向对象的同学,这个锅我接了。言归正传,在面向对象的世界有老三样:封装、继承、多态。

回忆杀,USB接口出现多久了?

在我的童年时期,3.5英寸软盘充斥着老爸的办公室,但是他们拷文件什么的都用3.5英寸软盘,我估计00后很少有人见过,但是USB接口大家应该是很熟悉的。USB接口是用来做什么的呢?小小的一个USB能几乎搞定所有外界硬件与电脑的交互。然而,如果我问你USB接口是如何实现的呢?你是不是又一脸懵逼,不用蒙逼,你不用在意他怎么实现的,你只需知道USB这个接口能干什么就可以了。敲黑板:这就是封装。类似的还有很多,比如ATM,插卡输密码取款,你不用管钱怎么吐出来的,我会告诉你其实每个ATM里都钻了个柜员吗?

USB1.0 USB2.0 USB3.0

科技在发展,人类在进步,USB也是一样,一直在升级,然而不管怎么升级,新的版本总有上面所有版本的功能。1.0有的2.0都有,1.0没有的,2.0照样可能有。敲黑板:这就是继承。 ##多种功能一应俱全 连手机、连u盘、连鼠标、连键盘、充电……一模一样的USB接口能根据硬件的不同实现不同的功能,敲黑板:这就是多态。

##不要多管闲事(单一职责原则) 每个类都有自己的事情要干,不要狗拿耗子多管闲事。如果把好多类聚合成一个超级类,这个超级类就会变成比你女朋友还要麻烦的bug采集器,让你怎么搞都搞不定。

不要缝缝补补,直接买新的(开放封闭原则)

当有新的功能需求的时候,不要在老功能上改,直接新开一个函数去实现,作为一个长者(装x一波)劝你们,如果以后拿到前辈们写的代码,不要轻易改,指不定有什么模块会依赖这个接口,最稳妥的方式就是新开一个函数。

不能忘本(替换原则)

USB2.0要能用在USB1.0上,USB3.0既能用在USB2.0也能用在USB1.0

加一层,如果不行就两层(接口分离原则)

类与类之间交互的时候通常是通过开放的接口,而不是把两个类合并成一个类,比如耳机和iphone,iphone7之前,耳机和iphone是直接通过耳机孔交互的,iphone7一出,你以前的耳机咋办?加一层转换头嘛!而不是把iphone7拆了改那个接口。

##讲这么多有什么用? 我就问一句话:如果每年出的新手机都用新的充电口新的耳机孔新的sim卡,你觉得蛋疼不???

本文链接:http://www.yuqiaochuang.com/post/【朝花夕拾】类.html

-- EOF --

Comments

""