标签:com 软件 特性 复用 基类 分析 隔离 一个个 客户
世界是具体的,认知是抽象的。像自然界中的生物、植物、动物一个个名词,就是对一系列具体个体抽象出来的称谓,而鱼、老虎、树等就是一个个实在的具体。哦,也许你会说,树也是对一系列具体个体的抽象出来的称谓,对也不对,对是因为树确实是一系列具体个体的抽象称谓,不对是因为照这个逻辑下去,就会陷入死循环,直到小到细胞,原子,夸克,但是你能保证夸克就是最小的具体吗?还好前人已经帮我们解决这个思考了,通过继承的关系,可以从抽象开始,逐层的继承下去,就会形成一个具有抽象与具体关系的层次关系,就如同我们的世界那样,也是通过抽象与具体形成的层次。
面向对象的设计实质是通过对现实世界提炼出符合需求的抽象封装,然后通过逐层继承抽象并拓展实现,实现同一继承来源然而变现多态性质。
比如下图的继承关系,这是游戏的从最抽象出的对象,到角色、静态采集物、场景,再到人物、宠物、怪、坐骑等,就是典型的面向对象设计。
软件设计就难的是应对变化、变化、变化。通过把系统功能封装成一个个对象,就可以粒度细化、功能实现的耦合度低和职责独立,细化了就能够更好的把控;耦合度低就是高内聚、松耦合,能够减少功能实现之间的关联,降低修改的影响;职责单一独立就能够提高代码复用,复用就能够提高开发效率与提高可维护性。
为了能够更好的实现面向对象设计,应该做到隔离变化,也就是把变与不变隔离开,不要让变化的东西影响到不变的,适应软件的变化。对象各有独自的功能,也就是对象的功能要单一,新能功能类型不应该影响到旧的对象。这里说的比较简单,其实大师们已经总结出面向对象设计原则来指导我们的开发了。
在现实中,面向接口设计随处可见,比如那么多的标准协会,比如发布的C++标准,C-98/03/11等,比如各个工厂生产的零件等,都有各自对应的生产标准,只有接口标准化,才会使产业更加强盛。相反,接口没有标准,就会造成生产力低下,根本无经济全球化一说了。
面向接口编程就是抽象需求成一个个独立的接口/抽象类,然后被继承或委托/组成的形式来实现或拓展新的具体或更加强大完善的抽象,通过层层封装、继承,最后就会实现运行时多态的特性,从而提高代码的灵活性。
本文通过分析什么是面向对象,为什么需要面向对象,和面向对象设计的原则来说明软件开发中面向对象设计是实现大型软件程序的基石。面向接口编程,而不是面向对象编程,能够使代码更加灵活,更加优美强大。
标签:com 软件 特性 复用 基类 分析 隔离 一个个 客户
原文地址:https://www.cnblogs.com/liangjf/p/9536850.html