WRY

Where Are You?
You are on the brave land,
To experience, to remember...

0%

编程思想&设计模式

编程思想

根据《深入探索C++对象模型》中整理总结的,书中关于这部分的内容很少,而且没有介绍的很详细,下面的内容可能存在较大偏差。

程序模型

没有自定义类的概念,或者说是没有类函数,都是普通的函数,所有的数据都是通过参数传入的

抽象数据类型模型

有了自定义类的概念,允许用户重载函数,实现自定义的目的。可以使用类函数,此时函数处理的数据,还可以通过隐藏this指针传入,这就是封装的概念?

面向对象模型

除了在抽象数据类型中的封装概念之外,额外强调继承多态

设计模式

6大设计原则,24种设计模式分为三大类,没必要一个个看,只要记住一句软件工程的至理名言——没有什么是加一层封装不能解决的。

针对面试,主要介绍:

  • 创造型模式
    • 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。如全局设备管理器,全局数据池
    • 工厂模式:包括简单工厂模式、抽象工厂模式、工厂方法模式
      • 简单工厂模式:主要用于创建对象。用一个工厂来根据输入的条件产生不同的类,然后根据不同类的虚函数得到不同的结果。
      • 工厂方法模式:修正了简单工厂模式中不遵守开放封闭原则。把选择判断移到了客户端去实现,如果想添加新功能就不用修改原来的类,直接修改客户端即可。
      • 抽象工厂模式:定义了一个创建一系列相关或相互依赖的接口,而无需指定他们的具体类。
  • 结构型模式
    • 适配器模式:转换接口使得原本不兼容的类可以一起工作,对应的生活场景是手机充电转接头。
    • 装饰模式:动态地给一个对象添加一些额外的职责,对应Python中的装饰器,它经常用于有切面需求的场景,比如:插入日志、性能测试、权限校验等场景。
  • 行为型模式
    • 迭代器模式:提供一种能够遍历容器中所有元素而无需暴露该容器的内部表述的方法。对应STL中的迭代器.
    • 观察者模式:主题对象发生变化时,会通知所有订阅它的观察者。典型场景有微信公众号消息推送机制、IO多路复用中的epoll。

资源