关于软件设计框架的一点个人心得,之前造了一些轮子,发现修修改改,始终没有造的很好!架构能力不行啊!结果还是没有深入理解MVC,MVP,MVVM等的一些概念,后来我发现这些概念真tm让你晕,我去tm的mvvm,这一切的一切不就是为了解耦啊,经过深思再深思,我终于写出如下逻辑,一直对设计框架有点着迷,毕竟能设计出好的框架定是有足够多的开发经验,如何达到解耦性高!

1,这种适合在各窗口进入聚合的时候采用!
2,在创建控件的时候不必采用这种方式,除非该控件有相当足够的逻辑写!

总要展示一波代码表示表示

//
class BaseObject
{
public:BaseObject(BaseObject*pParent){AddObserver(this);}virtual ~BaseObject(){for(auto item : m_lstObserver){item->RemoveObserver(this);}}void AddObserver(BaseObject *pObj){m_lstObserver.push_back(pObj);}void RemoveObserver(BaseObject *pObj){auto item = m_lstObserver.begin();for(item ; item!=m_lstObserver.end() ; ++item){if(*item == pObj){break;}}}void NotifyStateChange(int state,long long lparam = 0,void *pParam = nullptr){for(auto item : m_lstObserver){item->OnActionStateChange(this,state,lparam,pParam);}}virtual void OnActionStateChange(BaseObject * pObjSrc,int state,long long lparam = 0,void *pParam = nullptr){}virtual void OnDataChange(){}std::list<BaseObject*> m_lstObserver;   //observer listvirtual void Update(){};
};class BaseUI : public BaseObject
{
public:BaseUI(BaseObject *pParent):BaseObject(pParent){}};
//这上面是基类
/////we write our code here below!
//UIController中我们只要调Notify--什么的,就直接把理解好的数据,发送UI窗口,交付上层显示
class UI;class UIController
{
public:UIController(UI*pView){m_pView = pView;}void SendEmoji(){/* no we send to socket !*/}virtual void OnRecv(char *pData){//在这里判断!,如果发送表情成功//m_pView->NotifyStateChange(param,param,param);}UI *m_pView;
};class UI : public BaseUI
{
public:UI(BaseUI *pParent):BaseUI(pParent),m_ctl(this){}~UI(){}void OnClicked(){m_ctl.SendEmoji();}virtual void OnActionStateChange(BaseObject * pObjSrc,int state,long long lparam,void *pParam) override{/*if(pObjSrc == this){if(lparam){m_emojiUI.show(pParam);}}*/}UIController m_ctl;
};int _tmain(int argc, _TCHAR* argv[])
{UI ui(nullptr);UI ui2(nullptr);ui2.AddObserver(&ui);//ui来观察ui2,ui2的事件都会发一份给uireturn 0;
}

更多文章:http://blog.csdn.net/what951006?viewmode=contents
powered by: 小乌龟在大乌龟背上~

C/C++ 如何设计框架相关推荐

  1. 设计师不应该错过的响应式设计框架(含优缺点分析)

    Ethan Marcotte称响应式设计是基于网格建立一个网站.Marcotte定义这项技术后,响应式设计框架开始出现,主要是css和JavaScript的结合.许多框架都是开源的,可以免费下载和快速 ...

  2. SOA之(2)——SOA架构基础概念与设计框架

    SOA的设计框架 设计框架与架构相关的概念紧密相连,原则.模式和架构始终是与设计共舞的. SOA服务设计的原则中记录了一个基础的设计框架: 设计特性(Design Characteristic)--由 ...

  3. Origami – 用于 Quartz 的免费的交互设计框架

    Origami 是一个为 Quartz Composer 开发的免费的工具包--由Facebook设计团队创建,让交互设计原型更加简单,不需要编程. 如今,大多数设计师通过创建静态原型来表达要实现的应 ...

  4. BetaFlight深入传感设计:传感模块设计框架

    BetaFlight深入传感设计:传感模块设计框架 1. BetaFlight传感器简介 2. BetaFlight传感器嵌入式软件设计 3. HwPreInit/HwInit阶段 4. HwIo阶段 ...

  5. 基于Vue的数据可视化设计框架,数据大屏可视化编辑器

    开发文档(★★★★★) 请访问 https://lizhensheng.github.io/vue-data-view/ 完整代码下载地址:基于Vue的数据可视化设计框架,数据大屏可视化编辑器 简介 ...

  6. 《 产品设计思维:电商产品设计全攻略》一一1.3 有效的设计框架

    1.3 有效的设计框架 没有最好的设计,只有最适合的设计,基于场景化的设计永远是核心. 1.3.1 设计的思维定式 当认识到设计是一个"为达到某个目的而刻意进行的创造行为"时,我们 ...

  7. 基于机器学习的协同创新设计框架-香水瓶设计

    hi,大家好~我是shadow,一枚设计师/全栈工程师/算法研究员,目前主要研究方向是人工智能写作和人工智能设计,当然偶尔也会跨界到人工智能艺术及其他各种AI产品.这是我发在<人工智能Mix&g ...

  8. MFQPPDCS测试分析和测试设计框架l学习记录

    这几天在学习邰晓梅老师提出的MTQ-PPDCS测试框架,作为嵌入式软件测试从业人员,在测试框架学习过程中结合个人经历过的嵌入式软件测试项目,以思维导图形式梳理邰晓梅老师的框架理论,整理如下,希望通过进 ...

  9. MFQPPDCS测试分析和测试设计框架

    MFQ & PPDCS是由邰晓梅提出的一套测试设计框架:其中MFQ针对大型系统中的功能多且复杂.功能之间的交互多.质量属性要求高的特点,结合Model Based Testing的思路,按照4 ...

最新文章

  1. 第一次使用Android Studio时你应该知道的一切配置
  2. java map取值_Java Set接口 Map 与枚举
  3. C++ map的简单实现
  4. 零基础学python电子书-零基础学Python
  5. 复合索引列顺序对性能的影响
  6. 快速备份和还原 MySQL 数据库的另一种方法
  7. tftd32搭建DHCP服务器软件打开报错
  8. 论文解读(GMI)《Graph Representation Learning via Graphical Mutual Information Maximization》
  9. 2023南华大学计算机考研信息汇总
  10. 最先进的智能采茶机器人_一种智能采茶机器人的制作方法
  11. 数据库之《会员管理系统》
  12. 获取当前时间,并转换为时间戳
  13. scrapy-中国气象局·天气预报
  14. 中科大教授耗时11年解决两大数学猜想,他是第三位获西蒙斯奖华人数学家
  15. 你知道PHP的另一种语法吗,我孤陋寡闻了
  16. tcpdump命令个人笔记
  17. 基于大数据技术的园区安全环保一体化综合管理系统的应用
  18. java.util.concurrent同步框架(AQS论文中文翻译)
  19. 随笔—邀请赛前训—Wizards' Duel
  20. 展现神奇功能:ASP中FSO并非不安全(转)

热门文章

  1. 自动化手游测试视频震撼发布
  2. markdown解析
  3. java里面怎么生成备注时间_Android studio 创建java文件时 注解显示作者、日期、时间...
  4. 【笔记】Polygon mesh processing 读书笔记(3)
  5. adobe air linux centos,Adobe AIR(跨平台应用)
  6. 修改linux系统iqn,linux iscsi initiator 安装配置
  7. 网络代理服务器的设计与实现
  8. 多线程系列学习:AQS(一)获取锁
  9. java jpanel边框_JPanel设置边框
  10. 从零开始java数据库SQL优化(二):多个LEFT JOIN的SQL优化