1. 模型类与控制类

让保存数据的类,仅用于数据的持有,除此之外,不向外界提供过多的修改接口(甚至是访问接口),修改(有时是访问)接口统一交由其控制类。举一个不恰当的例子,试卷类仅用于记录成绩,只有教师类(控制类)可对成绩进行一系列的修改和访问。

让控制类(操纵数据的类),仅用于操作动作(而不保存数据),操纵的方式主要有两种:

  • 维护模型类的对象作为控制类的私有成员变量

  • 将模型类的实例以参数的形式传递给控制类的相关成员函数

这多少已经开始有点 MVC 的设计思想了。

“谁来监督监督者?”,也存在控制类控制类,使更一层的抽象和提取。但“我附庸的附庸,不是我的附庸”,正如企业的董事长不会事无巨细,直接管理流水线上的每一个员工一样,控制类的控制类也不直接操作数据,而是通过中间的桥梁和媒介,位于中间层的空间类。

所以 MVC 的设计思想,自然内嵌了一种分层的关系。

2. 继承体系

父类和子类(甚至爷类和孙类)之间的不同和差异能有多少?有时不需要很大,只需要重写某一虚函数,甚至唯一的差异在私有成员的持有上,私有成员自然带来构造函数的不同;

子类比父类功能和属性(成员函数和成员变量)上会只多不少,这里的,意味着一种功能的拓展,“站在了巨人的肩膀人”。

3. 空参空实现的构造函数的意义

在类的继承层次较深时,如果继承关系中的一层,给出了一种形式的构造(非空参构造)时,编译器就不会为当前类再提供以调用当前类成员函数默认构造为职责的空参构造形式,底层类的构造函数在其初始化参数列表的位置就要显式的给出其父类的实现。

4. 如何在一个类的内部实现规则可选、实现模式可调

所谓规则、所谓模式,都是有限状态集,对有限状态最有力的模拟类型即是枚举类型变量,我们定义这些状态或规则所对应的枚举类型,以一个该枚举类型变量作为该类的构造函数所需的参数(该类内部需维护一个私有的该枚举类型变量),在相关的不同规则、模式下的处理函数时。

class Model
{
public:enum criterion { normal, case1, case2};Model(criterion criter):_criter(criter){}void process(){switch (_criter){case normal:break;case case1:break;case case2:break;default:break;      }}
private:const criterion _criter;
};

面向对象 —— 结构与设计相关推荐

  1. 面向对象和结构化程序设计的区别X

    面向对象和结构化程序设计的区别 结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的.转移语句可以使程序的控制流程强制性的转向程序的任一处,在传统流程图中,就是用上节我们提到的" ...

  2. 面向对象分析和设计的几个关键步骤_(豁然开朗)《面向对象分析与设计》读书笔记 (4)- 分类...

    目录 分类 正确分类的重要性 分类的困难 分类的增量和迭代本质 确定类和对象 经典方法 && 现代方法 (种) 面向对象分析 (主要识别对象) 关键抽象和机制 确定关键抽象 识别机制 ...

  3. OOAD 面向对象分析与设计

    OOAD 面向对象分析与设计2007年06月16日 星期六 下午 04:38OOAD(Object Orient Analysis & Design,面向对象的分析和设计,面向对象分析与设计) ...

  4. 面向对象的几大设计原则

    对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一.在面向对象设计中,可维护 ...

  5. 面向对象的关系数据库设计

    面向对象的关系数据库设计 一.概念的区分 有些人把面向对象的数据库设计(即数据库模式)思想与面向对象数据库管理系统(OODBMS) 理论混为一谈.其实前者是数据库用户定义数据库模式的思路,后者是数据库 ...

  6. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之LED驱动框架--面向对象、分层设计思想

    文章目录 前言 1.LED驱动程序框架 1.1.对于LED驱动,我们想要什么样的接口? 1.2.LED驱动要怎么写,才能支持多个板子?分层写 1.3.程序分析 驱动程序 应用程序 Makefile 1 ...

  7. 《面向对象分析与设计》一1.4面向对象方法的主要优点

    1.4面向对象方法的主要优点 本节从认识论的角度和软件工程方法的角度看一下面向对象方法带来的益处,并把面向对象方法与传统方法进行比较,看面向对象方法有什么优点. 从认识论的角度面向对象方法改变了开发软 ...

  8. 面向对象编程,设计原则,设计模式

    2019独角兽企业重金招聘Python工程师标准>>> 面向对象编程,设计原则,设计模式 面向对象编程 面向对象编程与面向过程编程的区别 面向对象软件开发的优点 面向对象编程语言 C ...

  9. 面向对象分析与设计中的基本事件处理的机制及其优缺点对比

    xjtuer最好不要抄,五次作业都是去年优秀作业,如果因为全抄被老师逮住全给0分就得不偿失了,放在这里是给大家一个思路不用再去查找很多资料,了解之后再自己总结写一写 面向对象分析与设计中的基本事件处理 ...

最新文章

  1. I/O多路复用,从来没遇到过这么明白的文章
  2. HDOJ HDU 1106 排序 ACM 1106 IN HDU
  3. 信息系统项目管理师培训感言
  4. 2017一季度JAVA面试题锦集
  5. [deviceone开发]-do_RichLabel的简单示例
  6. Oracle删除pk+cascade,Oracle删除表
  7. 骁龙855加持!疑似红米Pro 2曝光:旗下首款升降摄像头机型?
  8. QTreeView处理大量数据(使用1000万条数据,每次都只是部分刷新)
  9. flume的各个组件及整体工作流程
  10. 转帖:三种快乐物质——多巴胺、血清素、内啡肽
  11. Golang 高效编程 分号的使用 与 风格
  12. Ice helloworld
  13. App Thinning(应用瘦身)功能介绍
  14. 用python3制作视频字幕,生成双英文双语字幕txt和srt文件使用百度和有道翻译自封装翻译接口,可以秒杀付费工具,字幕脚本为qiweb3远程 2022年5月29日
  15. 植物神经紊乱,适量进食米饭有什么好处?
  16. xb格式数据库迁移处理
  17. C站万字详解二叉树基本操作演示程序(附图)
  18. 个人网盘配置——以Cloudreve为例
  19. echarts图表的内边距_echarts - 条形图grid设置距离绘图区域的距离
  20. 玩转json——json-->txt

热门文章

  1. Spring+hibernate+JSP实现Piano的数据库操作---1.目录结构+展示
  2. 计算机网络-自顶向下方法(7th) 第四章 Review Questions 英文题目
  3. java dll 调用方法_关于Java调用dll的方法 | 学步园
  4. python选择语句是什么语句_Python语言中的三种选择语句
  5. 重试次数配置_Stelnet(ssh)登陆华为交换机配置教程
  6. Python基础——文件的读写
  7. VS2015+OpenCV3.4.2+Win10+简单调用摄像头
  8. ECMAScript 6 + Babel
  9. cacti安装后修改说明
  10. 关于ashx的基本应用