# learning_cpp **Repository Path**: wujehy/learning_cpp ## Basic Information - **Project Name**: learning_cpp - **Description**: 给新生的 cpp 进阶学习项目 - **Primary Language**: C++ - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2020-03-14 - **Last Updated**: 2021-02-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # learning_cpp #### 介绍 给新生的 cpp 进阶学习项目 ## AuthorityControlTest 权限控制 的方案 ,对外 限制权限,对内 可以开放权限 ## ListernerControlText 监听器控制 的方案 , 用途在事件触发 以及 异步操作的时候使用 例如 我收到了一个消息,我才触发 我的逻辑 , 或者 消息路由的时候 监听器可以 回调 你需要的事件 同事 包含 内存安全控制的相关知识点 ## SingletonTest 单例模式 , 是 设计模式的一个常用的一种设计方式, 目的是在全局都可以 拿到你的指定代码的 变量. 例如: 你在启动软件的时候存储了 用户信息,当你切换到另一个 ui , 你不希望通过传参的方式 传递信息 . 那么 单例模式的作用就出来了. 单例模式的对象全局储存,你在哪里都能拿到 单例里面存储的对象. 这样 就不必 每次传递 参数来 同步数据(或代码). ## InterfaceControlTest 接口的抽象, 用途是提供一个抽象的类 , 为了方便第三方 或者后期 实现或者 右相同的操作的动作 的时候 统一管理. 这里以数据库场景为例: 当某个项目以 Sqlite为数据库开放出去 , 为了布局限于 其他人扩展使用 mysql redis 等 数据库 , 因此抽象一个接口 , 当第三方 需要修改数据库选型的时候 只需要修改实例化的对象 即可 无缝对接 . 具体原理 看 InterfaceControlTest 案例. ## SmartPointerTest 智能指针的使用, 包括 基本使用 和 高级用法 testMain.cpp 基本使用 userPort.cpp SharedClass.cpp 高级使用 说明 看注释. ## IfElseToMap 今天在网上看到关于 if else 等业务扩展的问题 初期很方便后期 堆代码的方式 . 为此分享一下我这边使用的业务扩展的方式 , 将 if else 转化成map 的方式 优化项目 . 在我的项目中大量使用 可以借鉴一下.(例如GeeJoan 最开始是函数指针的方式, 然后在其他项目大量使用接口的方式, 可参见server-framework-cpp的接口方式) 原理很简单 , 就是 条件转化成 key 结果存在 value 里即可 . 话不多说 具体参见 IfElseToMap 目录下的例子 . 可以很方便扩展你的系统结构, 完全可hold住 几百几千的接口系统 例子: [IfElseToMap](./IfElseToMap) 代码和日志 : [README.md](./IfElseToMap/README.md) NOTE:例子为了方便理解使用,实际应用需要多线程, 目前公开的代码中可以参照server-framework-cpp的方式收到包后扔到线程池处理 By the way : C++ 开发项目是不需要框架的,想要框架,那就手撸一个... [手动狗头]