当前位置:主页 > 技术方案 >

面向对象适合那些业务逻辑复杂

发布时间:2021-06-12 15:08   浏览次数:次   作者:admin
知乎用户回答。
世上有loli控,御姐控,女王控,所以有句话叫万物皆可控。
对象也是如此,一切都是对象。技术开发,技术解决方案。
对象这个词你可以理解为一个总称,比如男女都叫人,蜡烛皮鞭高跟鞋都是道具,所以面向对象本来就是都叫对象,翻译过来不是原汁原味,所以,房子是对象,飞机是对象,猫是对象,树是对象,女朋友也是对象,而且对象是唯一的:你的房子是你的,不是我的,你在国外看到的美女不是我在国内看到的美女,你的身份证号码与我的身份证号码不同。
那房子里有什么呢,有电脑,还有动作片光盘,战争片录像带,人体艺术杂志…现在这些包含在房子里的东西不是什么,而是所谓的属性…
对象,属性都有了,剩下的就是方法了,方法也很好理解啊,意思是你想要得到某种结果,就需要用特定的方法,比如你女朋友生气要哄,不开心要逗她开心,哄和逗这些都是让女朋友死心塌地的方法…等等,发现一个美眉要用追的方法,和女朋友逛街要用窥的方法,恋爱要用谈的方法…
-物体是一个概念,所有的东西都被称为物体(没有不是物体的东西)-属性是物体的组成部分,所有可以包含的部分都被称为属性(没有不包含属性的物体)-方法是实现目标的途径,所有可行的行为都成为方法(没有不存在方法的物体和属性,但可以选择哪种方法)
因此在设计时要建立正确的对象:咱要找的是MM,不是恐龙,你建芙蓉姐姐这个对象显然不是正常人决定正确的对象后,要弄清楚她的脾性爱好——对象的属性是:身高165cm,体重45kg,三围84cm,66cm,86cm,单身后你要用正确的方法去追求,聊天(参数是时尚,美容等等),看电影(爱情片,恐怖片,韩国泡菜),送花(3,11,99)
现在应该明确对象、属性和方法的定义。
接着是封装,继承,多态。
封装就是要保护好女朋友,不要被别人勾引过去,因为要让她只能听信你得花言巧语,不要在追到手之前介绍给别人的帅哥,所以自己的妻子是自己的,不能给别人,这就是私密封装,再比如,你的账户-这个对象,有钱-这个属性你中彩票1个亿,亲戚朋友都找你借钱,你觉得亲戚里道的,借就借吧,这钱就是局部封装如果中彩票100个亿,满街撒钱,这就是全局封装-封装就是决定对象的使用范围,当然,你要让我帮你花我也不介意服务。
继承权,如果你的财产没有捐赠,那么你的儿子就是自然继承人,这叫单重继承权,你7、8个孩子分家产权,这叫多重继承权…而且,如果不把意外伤害受益人写给别人,别人就不能继承权…继承权就是决定对象的属性,方法可以用在哪个对象身上。
例如,你擅长做中餐,你的儿子擅长做西餐,你的女儿擅长做点心,现在你有一个铁哥在你家串门吃饭,他用这种方法-你家.吃(中餐),可以尝到猪肉炖粉条,用-你家.吃(西餐)可以吃牛排,用-用你家.吃(点心)可以尝到面点,这就是吃这种方法的多态性,因为不能限制吃只能吃一种东西啊,就像开门可以用钥匙,也可以划卡,也可以遥控等-多态是同一种方法的不同操作方法。
首先,其实我并不建议初学者去深入了解面向对象。我们所说的深度,大概就是以设计模式为界吧。一般情况下,两年工作经验以下的新人,要么半途而废(这算好),要么半途而废(走火入魔)。
近年来,越来越少的人谈论设计模式,两天前我看到一个问题:面向对象(OOP)是编程语言发展的弯路吗?为什么?
这有点狠,呵呵。弯路倒谈不上,只能说现在面向对象已被拉下神坛,回归常态:不再是万物皆对象的狂热,而应该是面向对象的地方。
不知大家是否同意:设计模式本质上是对传统对象弊端的修补?这句话说得深一点,新手可以随便看看。
说实话,编程新手应该如何理解面向对象?
首先,面向对象仍然是目前最主流、最有效的处理复杂业务逻辑的手段。不要纠正错误枉过正,听一些人叫嚣面向对象已经死了什么的。如此之多以前不支持面向对象的语言(如php/JavaScript)都在竭尽全力地向对象靠拢,这是一个证明。当然,学习面向对象,最好还是用纯粹、本地支持面向对象的语言,如C#和Java,强烈不建议用JavaScript学习面向对象-太残太扭太伤心…
第二,每个人都应该理解面向对象需要解决的问题,或者它使用的场景。面向对象不适合你在学习各种语言语法时写的Demo程序(如冒泡排序、书籍/课程管理系统等),甚至大多数小型开发项目(如普通企业网站、个人博客)都不适合。面向对象适合那些业务逻辑复杂(实际上更适合使用复杂)的大型项目。所谓复杂,复杂,复杂,复杂,混乱,项目杂乱,可以表现为:功能多变化多,因此代码量大,开发人员多,开发/维护跨度长…
下一步我将继续讲,但是每个人都必须首先有这种意识。否则你总是用面向对象来套你那几个小项目,怎样抽象如何封装,肯定会越整越晕。在小项目中,面向对象没有用,体现不出面向对象的好处——这也是为什么我一开始就说不建议新手去‘深入’了解面向对象的原因,这一阶段,你所接触的项目规模有限,对代码复杂性的理解有限,很难理解面向对象的作用。
最终,我给大家勾勒出几个理解对象的层次,由浅入深,大家可以依次理解。
1.学习面向对象的语法。类别的声明和继承,界面和抽象,方法和属性,访问修饰符..这个没什么好说的,很简单,都要掌握。
2.想明白为什么会有类别。我建议如何通俗易懂的举个例子来说明面向对象和面向过程的区别。匿名用户的高赞回答,简单来说,函数太多,要分类管理。这就够了,然后在实际开发工作中,尽量分类清晰有条理。
3.理解对象是方法(函数)和数据的组合。因为如果你只停留在第二点的理解上,所有的类别其实都是静态的,所有的方法都是静态的。但是类别的一个主要特点是它本身包含数据,不同的数据可以创建不同的例子(对象)。你看,直到这个时候,我们才能说面向对象,而不是面向对象。
4.开始继承。注意,从这里开始,可能会有陷阱。继承实际上带来了两个结果:重用和多态化。重用很好理解。子类可以利用父母的所有非私有属性和方法,所以很多同学一使用继承就奔向重用。比如狗有四条腿,猫有四条腿,就抽象出一个有四条腿的父母:动物...但是这样做的问题是:桌子也有四条腿,怎么样?因为事物之间复杂的共性/特征关系,很容易做出多重继承。比如你开始是这样想的:
一切都很美好,但是接下来的鸭子呢?你觉得应该是家禽,但是请注意,它也会游泳(代码需要这个功能)。同样,还有公鸡,也可以产肉,怎么办?还有漂亮的画眉,用来观赏,怎么样?动物越来越多,系统崩溃..
因此,这实际上是可以批评面向对象的第一点,或层次。但千万不要因为一门技术有这样的问题,而轻易地放弃。