(Boolan)C++设计模式 <一> ——设计模式简介以及面向对象设计原则

本文介绍了设计模式的概念,强调了面向对象设计原则在节省开发精力和应对变化中的重要性。通过举例说明,阐述了抽象思维如何帮助解决软件设计中的复杂性,特别是通过抽象和分解来抵御变化。同时,提到了面向对象设计的一些基本原则,如依赖倒置原则、开放封闭原则等,为良好的软件设计提供指导。
摘要由CSDN通过智能技术生成

什么是设计模式
每一个描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案。这样,你就能一次又一次地使用该方案而不必做重复劳动。
——Christopher Alexander

对于我们处理工作中的实际问题的时候,其实绝大多数的问题都是呈一定的模式重复出现的,如果不使用设计模式,那么我们在处理问题的时候,不得不一遍又一遍重复做着类似的工作,不但浪费了大量的精力,同时也更是一种极度让人烦躁的事。

那么面向对象可以帮我们节省大量的精力来不必要每次都重头开始处理那些差不多的问题,在真正的开始面对设计模式之前,那么我们得要先从对象说起。

之前我的文章里面谈到了我关于对象理解,对象其实是一种人类解释现实世界的通用规则。其实用好对象的核心思想就是不断的学着像解释理解这个世界一样,来不断地抽象的看待这个世界,并用代码来讲关于世界的故事。

在此,我不想过多地谈我过去我写过的东西(如果感兴趣可以查看之前的文章),毕竟这就是一种无趣的重复劳动,实在让人感觉提不起精神。但是,既然说道了面向对象,那么,这其中不得不提那么几句,这里我会尽量不炒冷饭。

抽象到底有多厉害?!
其实人类在认识世界的过程中,最大的特点也是现在最火热的机器学习、人工智能、深度学习这些目前应该是最火热的前沿技术希望得到的一种能力,其实就是抽象的能力



我还是那我这条故事狗最喜爱的举例子的动物,猫咪来说,就像上图的猫咪,对于人类的孩子来说,只需要告诉他其中的某一个猫咪,这个是叫做猫咪,那么当他看到其他的八成是能够认识的(估计遇到上图中的第一个,孩子认不出来也正常)。这些猫在人类看一眼看去全都是一样的,不一样的是细节问题,比如这是一只瘦猫,这是一只肥猫,这是花猫,这是白猫、黑猫等等等。即使仅仅听到一声喵也就知道一定有猫的存在。对于人来说,猫是一个大类,每只猫都是独立的存在。这时候看起来,每一只独立的猫有些类似于计算机的对象,而猫就类似于一个类了。

但是对于计算机来说,对象就是内存中的一块空间而已,在这块内存空间里面保存了一些数据,通过这些数据来解释了这个世界。比如,一只黑色的猫,眼睛是绿色等等,这些数据保存在内存中。也就是其实每个对象他是都是具体的,而不是抽象的,他只能表现着一只猫,如果另外一个猫咪的脚是白色的,那么数据不匹配,就应该是另外一个对象。所以其实对象对于人类世界来说就是不同的个体,每个个体都应该是独立的对象,因此也有学着曾经提出,将object翻译为对象其实并不合理,而应该翻译为物体就是这个道理。

如果我们观察每个对象到底是如何构成,就像我们在讨论一个人是什么性格一样,其实这些就相当于是底层思维模式,而人类更具备的一种向上抽象的能力。比如看到猫的第一反应是猫,而之后才会是他的毛色等等具体的特征。

而面向对象的过程,其实就是希望模拟人类这样一种抽象的思维,通过抽象思维来解释这样的世界。

而为了更好的能够用计算机解释好这个世界,程序员必须要有一套很好的抽象思维。

那么,抽象思维在帮我们更好的解释这个世界的同时,他还会给我们带来其他的帮助吗?对于软件设计的来说,最为头疼的地方就是,他无时无刻不再面对者一个次——变化。不论从客户的需求层面、技术平台层面、开发团队层面还是市场环境层面,都在面对着巨大的变化。而对应着每次变化,那么就需要面对代码的变更,这些变化会摧毁代码的体系结构的设计。

那么为了解决遇到问题的复杂性,我们通常会用两种方式来解决,一种是把分解,另外一种是抽象。

对于分解来说,其实就是分而治之,把大问题不断的划分为一个又一个的小问题,通过解决分解开的每一个小问题来解决整体的大问题。也就是不断的分工,各司其职来解决问题。

对于抽象来说,属于更高的层次,这其实是一种解决问题的通用技术。由于抽象就是不具体,不能掌握全部的复杂对象,所以也就忽视了大量的细节,而抓住一些主要细节,如果我们过于具体,对于中学所学习的物理就是难以进行的,因为我们都知道,中学的物理都建立在一套几乎完全理想化的条件下,比如摩擦力不变,空气没有阻力,温度不影响某一个参数的变化等等。这样抽象的结果,也是为了方便我们来解决主要的问题,而不至于陷入到细节的泥潭里无法自拔。

对于所有的软件思想都必须要落实在具体代码实现上,所以,还是落在一些伪码的描述层面来解释抽象思维的好处和优点。

那么先来看看这样一段伪码描述吧,它希望表达的是一种分而治之的思想&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值