Skip to content

Commit

Permalink
Cindy merges.
Browse files Browse the repository at this point in the history
  • Loading branch information
StrawberryCindy committed Feb 25, 2020
2 parents a8867f2 + e9ee7fa commit d753d1c
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
5 changes: 5 additions & 0 deletions note/c++后半篇自学.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# c++ 后半篇自学
## 杂学
* 引用和指针具有多态性,对象没有
* 复用:二进制层面,编译单位的,一个文件测试完成后原封不动
拷贝不是复用,粘贴就是瞎贴
* ifelse,代码里bad smell,一般会违反开闭原则
* c++不按回车阻塞式接收一个字符
```c++
char i=getch();
Expand Down Expand Up @@ -66,6 +70,7 @@
```c++
A::operator Type(){};
```




21 changes: 20 additions & 1 deletion note/设计模式.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@
3. Observer/Event 事件模式
4. 其他模式也会有关系只是没有那么明显
## 4.模板方法Template method
* 组件协作模式
* 举个栗子:stm32的回调函数
* 动机
* 每项任务有稳定的整体操作结构
Expand All @@ -134,4 +135,22 @@
* 稳定中有变化而且互不干扰
* 稳定的用非虚函数,变化时虚函数
* 调用机制:虚函数,函数指针建立晚绑定机制
* 稳定的步骤函数一般protected,单独调用没有意义
* 稳定的步骤函数一般protected,单独调用没有意义
## 5.策略模式Strategy
* 组件协作模式
* 动机
1. 在软件构建过程种算法多种多样经常改变,如果都编码到对象种会使得对象异常复杂
* 模式定义
定义一系列算法,封装起来使得不同算法之间可以互相替换(变化)
* 结果
算法可以独立于他的现有发行版本程序(稳定)而变化(拓展,子类化)
* 要点总结
1. 为子类和组件提供一系列可重用的算法
2. 提供除了ifelse,switch外的其他用法
1. ifelse是一种分而治之的做法
2. 可以开始考虑一下,一般可以使用抽象的做法解决
3. ifelse,代码里bad smell
3. Strategy对象如果没有实例变量,那么上下文可以共享同一个对象,节省对象开销
4. 一个顺带的好处:代码具有良好的本地性,不同的方法分别封装,使用时调用,减小内存占用
## 6.观察者模式Observer/Event
* 组件协作模式

0 comments on commit d753d1c

Please sign in to comment.