- 博客(22)
- 收藏
- 关注
原创 架构风格阅读
• Flygare, R., and Holmqvist, A. (2017). Performance characteristics between monolithic and microservice-based systems (Dissertation). • Engelen, Robert. (2008). A framework for service-oriented computing with C and C++ web service components. ACM
2024-11-11 16:51:31 69
原创 How Non-member Functions Improve Encapsulation
How Non-member Functions Improve Encapsulation
2024-11-09 15:04:10 87
原创 The Greatest Developer Fallacy Or The Wisest Words You’ll Ever Hear?
The Greatest Developer Fallacy Or The Wisest Words You’ll Ever Hear?
2024-11-08 08:44:52 64
原创 Teach Yourself Programming in Ten Years
https://www.norvig.com/21-days.html
2024-11-08 08:39:19 94
原创 学习新技术的方法
另外,一般来说,任何设计都有 trade-off(要什么和不要什么),所以,你要清楚这个技术的优势和劣势,以及带来的挑战。任何一个技术都有其底层的关键基础技术,这些关键技术很有可能也是其它技术的关键基础技术。任何技术都有其适用的场景,离开了这个场景,这个技术可能会有很多槽点,所以学习技术不但要知道这个技术是什么,还要知道其适用的场景。这个问题非常关键,也就是说,你在学习一个技术的时候,需要知道这个技术的成因和目标,也就是这个技术的灵魂。一般来说,任何一个技术都会有不同的实现,不同的实现都会有不同的侧重。
2024-10-25 08:37:44 166
原创 静态库封装为动态库
现有一个模块,例如某个通信模块分为2G、3G、4G、5G共四个子模块和一个基础模块Community基础模块。这四个子模块都是不同的人维护不同的动态库,客户在使用时,需要导入多个动态库和引用多个头文件。有什么方法可以简化客户的使用成本?留给思考者的三分钟…一个简单的方法是将多个子模块的动态库和基础模块Community的动态库合并成一个库,但是这样的一个库过大维护起来不是很方便。
2024-08-11 16:32:37 238
原创 面向切片编程
所有的设计思想和编程模式都是一种抽象,旨在从思想高度看问题,不能纠结于具体实现细节。计算机知识需要理论和实践相结合,知行合一,通过面向切片编程,可以有效地解耦合业务逻辑,提高代码的复用性和可维护性。跟我学C++中级篇——面向切片编程。
2024-07-13 15:22:50 363
原创 树状结构转换为链表结构
首先,我们定义一个简单的树状结构,每个节点包含一个值和指向子节点的指针。// 树节点的定义int value;接下来,我们定义链表节点,每个节点包含一个值和指向下一个节点的指针。int value;
2024-07-05 19:35:32 235
原创 基类成员的遮蔽
在上述代码中,`Derived`类中的`display`函数覆盖了`Base`类中的`display`函数,调用`d.display()`时,输出结果为“Display from Derived”。在这个例子中,`d.Base::display()`显式调用了基类的`display`函数,输出结果为“Display from Base”。在这个例子中,`Derived`类中的成员变量`var`覆盖了`Base`类中的成员变量`var`,因此`d.var`输出的结果是10。### 成员函数的遮蔽。
2024-07-04 09:21:28 379
原创 设计模式专栏说明
(设计模式:可复用面向对象软件的基础)或者Head First 设计模式。该专栏代码主要是记录自己学习的一些设计模式,强烈推荐去看两本书。该专栏的很多代码示例参考自Head First 设计模式。
2024-06-30 11:24:31 131
原创 观察者模式(Observer Pattern)
观察者模式通过定义一对多的依赖关系,使得多个观察者可以监听一个主题对象,当主题对象状态发生变化时,自动通知所有观察者进行更新。它将观察者与被观察者解耦,提供了一个灵活的机制来实现对象间的通信,适用于需要实时更新的场景。
2024-06-30 10:45:04 380
原创 代理模式(Proxy Pattern)
代理模式通过为目标对象提供一个代理对象,可以在不修改目标对象的情况下,添加额外的功能,例如控制访问、延迟加载、日志记录等。代理模式增强了系统的灵活性和可扩展性,适用于需要控制对象访问或添加额外功能的场景。
2024-06-29 23:16:54 681
原创 状态模式(State Pattern)
通过状态模式,我们可以清晰地定义红绿灯的状态和状态转换逻辑,使得代码结构更加清晰和易于维护。每个状态的行为被封装在独立的状态类中,当红绿灯的状态发生变化时,只需要切换到相应的状态对象,而不需要在上下文类中处理复杂的状态转换逻辑。状态模式很好地实现了对象行为的动态改变,适用于状态较多且需要频繁切换的场景。通过将状态转换逻辑放在上下文类中,状态类更加独立,职责更加单一。这种设计使得状态类只关注各自的行为,而状态转换的复杂性由上下文类管理,增强了系统的灵活性和可维护性。
2024-06-29 23:02:02 954
原创 迭代器模式(Iterator Pattern)
迭代器模式通过提供一个统一的接口来遍历集合对象中的元素,使得客户端代码可以一致地遍历不同类型的集合对象,而不需要了解其内部实现细节。这种模式特别适用于需要访问一个聚合对象的内容而又不希望暴露其内部表示的场景。通过迭代器模式,可以更加灵活和方便地操作和遍历集合对象。虽然直接使用vector遍历在简单情况下是可行的,但在复杂数据结构和需要更多灵活性和扩展性的情况下,迭代器模式提供了更好的解决方案。
2024-06-29 20:59:35 1163
原创 组合模式(Composite Pattern)
组合模式通过将对象组合成树形结构,能够一致地对待单个对象和组合对象,适用于需要表示“部分-整体”关系的场景。通过这种模式,可以轻松地扩展系统而不会影响客户端代码,同时保持代码的清晰和简洁。
2024-06-29 20:57:41 313
原创 组合模式(Composite Pattern)
组合模式通过将对象组合成树形结构,能够一致地对待单个对象和组合对象,适用于需要表示“部分-整体”关系的场景。通过这种模式,可以轻松地扩展系统而不会影响客户端代码,同时保持代码的清晰和简洁。
2024-06-29 20:50:20 337
原创 模板方法模式(Template Method Pattern)
模板方法模式通过在父类中定义算法的骨架,并将具体的实现步骤延迟到子类中,实现了代码的复用和算法的扩展。它适用于有固定算法结构,但其中某些步骤需要由子类具体实现的情况。模板方法模式使得算法的整体结构保持不变,而具体的实现细节可以灵活变化。
2024-06-29 20:31:20 435
原创 外观模式(Facade Pattern)
外观模式通过提供一个简化的接口,隐藏了子系统的复杂性,减少了客户端与子系统之间的耦合度,使得系统更容易使用和维护。它特别适用于需要与多个子系统进行交互的复杂系统,通过外观模式,可以将这些复杂的交互封装起来,使得客户端代码更加简洁和清晰。
2024-06-29 20:25:32 340
原创 命令模式(Command)
编译并运行这段代码,你将看到命令的执行、撤销和重做日志输出。通过使用命令模式,我们可以方便地管理和记录命令的执行历史,为实现复杂的功能提供了良好的扩展性。使用命令模式的设计模式可以帮助我们记录命令日志,并且可以方便地执行、撤销和重做命令。以下是一个简单的C++示例,展示了如何实现命令模式并记录命令日志。
2024-06-29 20:06:35 216
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人