- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 杂货边角(11):C++11之lambda匿名函数
匿名函数lambda思想是函数式编程的基础,其中以lisp为代表,以其抽象和迭代的思想让无数coder奉为圣经。函数式编程、命令式编程、面向对象编程、元编程等都是一种编程范型。而近年来的趋势是高级语言越来越多地引入多范型编程支持(如C++和Python都开始支持函数式编程)。C++11引入lambda特性,对于泛型编程和函数式编程的支持都极大提升。相比于lisp的lambda函数等同于C++98中的
2018-01-30 11:06:35 360
原创 设计模式之三:对象创建系列模式
前面一章《结构型系列模式》介绍了在程序框架设计中可以用到的几种特定场景下对应的针对性模式: 1. 如针对存在大量实例对象的环境下存在提升性能的需求,则可以采用享元模式,以提炼出使用场景下的不变的部分,以共享来减少实例对象数目; 2. 对遗留的子系统想要复用,但是又不想重构子系统,则可使用外观模式,让一组人构建外观类接口内部实现,另一组人则可以按照事先规定好的接口类进行编写,两组齐头并进; 3.
2018-01-24 16:03:54 355
原创 设计模式之一:六大设计原则
这里有篇文章关于各个原则结合代码进行较为清晰的阐述:http://www.uml.org.cn/sjms/201211023.asp#4个人觉得其实六大原则中,单一职责原则、开放-封闭原则其实是模块化编程时代的思想顺延,这两个原则显然是经过经验积累得到的代码可维护性的保证。而关于面向对象编程的三个重要思想则是面向接口编程(中间抽象层)、合成/聚合原则(减少不必要的强耦合)以及迪米特原则(增加中间代理
2018-01-23 10:18:21 216
原创 杂货边角(10):模板template和可变参数模板variadic template
前面说到可以通过反射机制来解放客户端对于同类型函数调用的手动分配,而将具体的定位和调用过程通过反射机制来实现,客户端输入的信息只需要是注册机中的function对应的key即可,这样可以在client程序中减少难看冗长的switch结构或if…else…结构。但是反射机制只是变相地将任务的复杂性交给了后台库的实现者,库的实现者依旧不得不挨个实现所有相似的函数个体。这里面重复的工作量可想而知,但是有什
2018-01-19 17:15:09 295
原创 杂货边角(9):C++实现事件委托机制
在设计模式中,根据耦合紧密度可以得到排序为:继承 > 依赖 > 组合/聚合 > 委托。其实个人感觉,事件委托机制说白了就是一个函数指针数组,通过注册绑定的函数,然后在特定的事件发生后触发遍历执行所有注册的函数,机制其实和C++运行库glibc中crtbegin.o和crtend.o收集当前程序中所有全局对象的初始化函数和析构函数,用以执行遍历操作一致。所以归根结底,事件委托机制的关键便是函数指针注册
2018-01-18 16:37:30 524
原创 杂货边角(8):C++实现反射机制
0. 反射机制是什么 最近在学习设计模式,经常能看到对反射机制的倍加推崇,如反射机制配合工厂方法模式可以有效减少逻辑判断分支存在导致不便维护的情况。所谓的反射的机制,即通过动态地字符串等输入参数为信息入口自动寻址调用相应函数的机制。比如如下场景/*****something forehead********/switch key{ case "调用SQL server数据库":
2018-01-17 15:03:55 296
原创 杂货边角(7):C++继承和多态的符号表角度解析
面向对象设计核心的思想便是抽象、封装、继承、多态和接口。继承机制是面向对象设计过程中动态性和模块性的来源,而多态性则是很多功能灵活性的来源。 0. C++继承机制 面向对象设计核心是抽象的思维,但是”重复两次的代码就可能有坏味道“,如果仅仅通过抽象将不同的功能模块具象成对象,但是不同对象间很可能存在着很强的相似性,如果独立成类,必然会造成重复,这便是继承机制出现的目的:复用。不过继承虽好,但是继
2018-01-17 13:10:36 813
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人