关于设计模式的那些事情

在软件开发领域中,关于如何编写好可维护的程序一直是一个备受争议的话题,进而也提出了不少的编程理论,可是这样的编程理论的理论基础在哪儿,为何编程这样的方法会比那样的方法要好,为何一样能完成结果的代码,维护起来会千差万别?今天咱们就来扯扯关于如何写好代码的那些个事情!!程序员

关于编程,咱们能够理解成为人与计算机交流的一直途径,就像咱们平时使用语言和人交流同样,把咱们的意图告诉对方,那么与计算机交流和与人交流的时候有哪些区别,我认为惟一不一样的是,咱们编程,面对的对象是计算机,而咱们聊天交流的时候,咱们面对的是可以理解咱们语言的人类,那么在咱们与计算机之间交流的时候 咱们须要注意那些的细节,而后咱们应该要注意那些坑。
编程

其实,纵观编程的两个趋势,主要有两种主流的派系,一种是面对过程的编程,一种是面对对象的编程,固然,当前还有不少新的编程方式,好比AOP(面对切面的编程,假如我说这个仅仅是面对对象编程的一个分支,会不会有人喷我说,你丫懂个毛线!),面对过程的编程不在咱们今天讨论的方位以内,今天咱们主要讨论的是面对对象的编程。好吧 进入正题
设计模式

吐了个槽

在面对对象的编程当中,不少书上都说了要遵循面对对象的几个特性,神马要封装,什么要继承,神马要多态。可是你去翻翻那些个所谓的JAVA入门到精通,什么20天学会JAVA编程等诸如此等我把它列为垃圾书籍的书中讲解的并不详细,甚至有些无良的做者随便一段代码抄录 而后作一些个有的没的注释,让各位读者看完之后,尼玛说了个啥都不知道,还白花花的花费了N多白银,我真心想说,大家正式有业(QU)界(NI)良(MA)心(BI)啊.函数

指导思想

进入正题,看看面对对象编程中这几个概念到底都有什么内涵spa

面对对象编程第一步 要封装

话说什么封装,为何要封装,封装好了有啥效果。
设计

 什么是封装?对象

答:封装就是将你的项目中屡次出现相同代码进行抽象与合并的这么一个过程叫作封装。这样说,应该可以明白很多了吧,其实封装仅仅是一个为了描述这个过程的一个名词而已,说白了就是提炼继承

为何要封装?接口

不少人应该遇到过这样的经历,特别是刚刚进入这一行的新人,满怀欣喜的啪啪码好了一对项目模块的代码,正准备commit的时候,PM说,丫的,你写了个啥?满屏的满屏的重复代码,你丫想干啥?接下来的就是PM的口头禅!看我嘴型“你-把-这-些-代-码-封-装-好-了-再-提-交!!”
开发

首次玩JAVA等相似的面对对象语言的骚年们确定很不解,说,尼玛我功能完成了就好了,为何还要封装来封装去,不嫌麻烦么?其实N多的PM也不会告诉你,等你把代码都提炼出来,你能够为你之后减小不少没必要要的加班。那好了 其实封装的真正意义就在于,修改和维护的时候会变得更加简单,试想一下,你的某段代码,在整个项目中出现了100次(没有提炼的那种),那么有一天,要对这段代码进行修改,骚年,你就等着加班到死吧,假如你将这100屡次一样的代码放在一个提炼的方法里,那么,你只须要改一个位置,其余的地方就更着变了,这样岂不是更加舒服?俗话说 不做就不会死,好好想一想后果吧,那些还不明白为何要封装代码的懵懂少年们,觉醒吧!!

那么封装的原则是什么?什么样的封装算是比较舒服的了?

其实这个没有定数,我只想告诉你基本一些个原则,当一段一样的代码在项目中出项了2次以上,我就可能会考虑把他弄到一个方法里面了,我这样作的目的很简单,就是为了可以方便的调用和维护,由于你维护一个小小的方法要比你维护一对散落的代码要容易许多,我把这个种方法叫作“代码方法集中管理”那么代码封装的另一个原则边界是什么,是否是我什么样的代码都放在一个提炼的方法里面了?答案:不是,封装的边界是在于,一个方法最好是只作一件事情,这样够简单,够单纯,并且这样作的影响范围是最小的。因此封装代码的方式边界就是“以影(SHA)响(SHANG)力(LI)最小为原则边界”

面对对象第二步 要继承

这个是面对对象的第二步,那么为何要继承??继承有什么样表现形式?

在不少书中都是这样对继承进行描述的,说Person Animal是父类,Student,dog,cat是子类,而后尼玛在Person,Animal类中写一堆有的没的方法函数,而后他用所谓extends 继承,而后告诉你们这个就是继承!不过这样写法是没有错,不过让人看得有点不知因此然就有点不对了!!并且 这样的书中只是说类能够继承,可是没有说继承有哪些很差的,屡次深层次继承会致使类的继承关系错综复杂,可读性很差,假如在深层数的继承中,你一般会遇到这样的状况,你每每为了了解一个类到底有多少个方法,你有可能要从超类读到从孙类,假如多来上几个接口,骚年,等死吧。(因此说,你若是遇到这样的代码,基本就是有两个可能,第一就是设计的这个程序员是个菜鸟,什么也不懂就一顿糊弄,还有就是你可能真正遇到对手了,对方是个大牛,不过人家可能不想让你插手他的项目,故意这样写 让你知难而退)

那么继承可以带来什么样的好处了?

最大的好处就是“省代码”这是把双刃剑,真的,在浅层次的继承中,你会体会到高潮般的快感,若是你把这个继承弄到深层数的继承中,你会体会到蛋疼两个字怎么写,菊紧的感觉怎么样诸如此类的感受。

还有一个继承的内涵就是,实现,也就是实现接口的意思,在面对对象的编程中,万般皆对象,你把接口理解成为一个JAVA中的抽象类基本就可以明白 实现也是继承的一个变种。


面对对象第二步 要多态

多态 这个应该不用多少了,是面对对象中最重要的方式,也是最诡异,最神奇,最难以掌握的一个概念。为何?

就他么一句“父类指向子类”就足矣让不少人望而却步,为何 不为何,由于多态很神奇!!

为何要用多态?

其实多态是多种形态的简写

怎么理解?

假如Person类是一个父类,StudentA,StudentB,StudentC是一些子类,那么父类只向之类之后,父类就和悟空同样有72变了,一下变StudentA,一下变StudentB,一下变StudentC,还分别执行这三个子类里相同的方法,可是输出的结果还不同!尼玛 我都快崩了,这就是多态,一个让人又爱又恨的超级特性。

多态在实际中怎用

其实在实际的用法中,经过都是“父类指向子类,而后这个父类一般都是抽象类或者方法,里面一般定义一些个抽象的方法,而后让他们的子类去实现,不一样的子类对同一个方法进行不一样的实现,从而产生不同的执行效果,这种手法就是多态的典型应用”。你看那些设计模式里面的23种方式,80%都是这么干的!!真的 不信你去找些代码看看!!看我说的有没有道理!

相关文章
相关标签/搜索