摘要: 1. 类图 2. 总结 代理模式包装一个对象,并为该对象提供一种访问控制。代理模式可应用于包装远程访问的对象(网络),客户调用代理访问远程对象就像访问本地对象一样,客户甚至都不知道远程对象的存在。代理模式还常用于包装开销比较大的对象,当客户端访问的创建时间比较长的对象时,代理首先构建一个“假”的对象,立即访问,然后再慢慢创建真实的对象。代理模式还可以用于控制对像的访问... 阅读全文
posted @ 2014-11-30 17:22 IT人Key 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 1. 类图 2. 总结 状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了他的类。 阅读全文
posted @ 2014-11-30 16:31 IT人Key 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 1.类图 2. 总结 当有数个对象集合,且对象之间有"整体/部分"关系时(多数为树形结构,某些节点保护子节点,某些节点没有子节点(叶子)),客户端希望用透明的方式使用所有节点时,可以使用Composite(组合)模式。MFC中窗口的组合就使用的是组合模式,一个窗口可以包含很多子窗口,而客户端可以调用统一的方法处理所有窗口,比如说隐藏窗口。 阅读全文
posted @ 2014-11-26 21:38 IT人Key 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 1. 类图 2. 总结 迭代器模式用于客户端程序用统一的方式遍历各种数据集合,而不需要知道数据集合的实现,同时可以自由扩充数据集合。每一种数据集合都需要单独实现一个针对与自身类型的迭代器。 阅读全文
posted @ 2014-11-26 21:25 IT人Key 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 1. 需求: 设计一个水果榨汁机程序,该程序可以完成橘子、苹果等水果的榨汁,而且该水果榨汁机还可以完成水果削皮和去核。 2. 分析: 不同水果的榨汁流程是一样的,都是先把水果准备好,然后搅碎,然后再把汁液漏出。但是不同水果的准备过程不一样,橘子只需要剥皮,而苹果需要先削皮,然后去核。所以我们可以将不同水果的准备过程封隔离开来,将榨汁流程封装在一起。 3. 类图: ... 阅读全文
posted @ 2014-11-24 20:18 IT人Key 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 1. 需求 要设计一个家庭媒体中心程序,可以连接DVD,电视(TV)和功放(Sounder),连接好之后,可以一键看电影,一键听音乐。(不用媒体中心的话看电影需要依次打开DVD,TV和Sounder)。 2. 分析 我们需要将实现细节封装起来,只暴露出来最简单的接口给客户程序,比如说WatchMovie和ListenMusic。 3. 类图 4. 总结 ... 阅读全文
posted @ 2014-11-22 10:51 IT人Key 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 1.需求 有个环境监测系统用于获取环境的各种数据并显示,包括温度、湿度、紫外线等。原来使用的是月亮(Moon)公司的温度传感器,但是这家公司的传感器经常测的数据不正确,于是领导要把传感器换成市场上最好的传感器厂商太阳(Sun)公司的温度传感器。现在需要你去做修改程序以接入Sun公司的温度传感器。(注:Moon公司传感器的获取温度的接口是GetTemperature,Sun公司获取传感器的接... 阅读全文
posted @ 2014-11-20 21:47 IT人Key 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 1.需求 为一个开关设计程序,这个开关有N按钮,同时对应N个插槽,要求可以接入任何电器厂商的API,从而可以控制任何电器。目前只有电灯和电视两种电器,要求写一个Demo程序,按钮1可以打开电灯。按钮2可以打开电视并且切换到上一次打开的频道。打开电视换频道需要打开机顶盒并且对机顶盒切换频道。 2. 分析 每个厂商的API不一致,且每个电器的打开流程都不一样,我们需要将这些差异封装... 阅读全文
posted @ 2014-11-20 20:32 IT人Key 阅读(485) 评论(0) 推荐(0) 编辑
摘要: 第一种:低效率实现 这种实现方法,优点是实现简单,缺点是在多线程频繁访问下效率比较低,经常出现锁竞争。适应于不需要频繁访问实例的情况下。 class Singleton { public: static Singleton* GetInstance() { AutoLock lock(mutex); if (!m_inst... 阅读全文
posted @ 2014-11-19 20:50 IT人Key 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 第一种:低效率实现 这种实现方法,优点是实现简单,缺点是在多线程频繁访问下效率比较低,经常出现锁竞争。适应于不需要频繁访问实例的情况下。 class Singleton { public: static Singleton* GetInstance() { AutoLock lock(mutex); if (!m_inst... 阅读全文
posted @ 2014-11-19 20:45 IT人Key 阅读(308) 评论(0) 推荐(0) 编辑