惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
Microsoft Security Blog
Microsoft Security Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
博客园_首页
T
Tailwind CSS Blog
aimingoo的专栏
aimingoo的专栏
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
P
Proofpoint News Feed
博客园 - 司徒正美
有赞技术团队
有赞技术团队
Engineering at Meta
Engineering at Meta
Last Week in AI
Last Week in AI
MongoDB | Blog
MongoDB | Blog

博客园 - 费哥

VC++实现应用程序对插件的支持(转) typedef的四个用途和两个陷阱(转) c#动态创建ODBC数据源 设为首页,加入收藏,联系我们 - 费哥 - 博客园 ASP.NET 2.0中CSS失效 ADO.NET更新ACCESS碰到的怪异问题 DataGrid中的數據輸出到Excel 对 Windows 窗体控件进行线程安全调用 将参数传递给线程(Vc#2005) 创建合理位置的线标注 Sql2005导出SQL2000格式的脚本 c#枚举的用法及遍历方法 将外部图块插入当前图形(c#代码) 无法将顶级控件添加到控件 使用Microsoft Visual Studio2005开发ObjectARX设置 CS1595:已在多处定义 软件设计师考试大纲 <<设计模式可复用面向对象软件的基础>>--组合模式(Composite) <<设计模式可复用面向对象软件的基础>>读书笔记--(第一章)引言
<<设计模式可复用面向对象软件的基础>>--设计模...
费哥 · 2008-03-05 · via 博客园 - 费哥

寻找合适的对象
面向对象设计最困难的部分是将系统分解成对象集合。
一些设计方法:
1.写出一个问题描述,挑出名词和动词,进而创建相应的类和操作
2.关注于系统的协作和职责关系
3.对现实世界建模,再将分析时发现的对象转化至设计中决定对象的粒度

指定对象接口
对象声明的每一个操作指定操作名、作为参数的对象和返回值,这就是所谓的操作的型构(signature)。对象操作所定义的所有操作型构的集合被称为该对象的接口(interface)。
对象接口与其功能实现是分离的,不同对象可以对请求做不同的实现,也就是说,两个有相同接口的对象可以有完全不同的实现。描述对象的实现
对象的实现是由它的类决定的,类指定了对象的内部数据和表示,也定义了对象所能完成的操作
类继承与接口继承的比较:
类继承根据一个对象的实现定义了另一个对象的实现。简而言之,它是代码和表示的共享机制。然而,接口继承 (或子类型化)描述了一个对象什么时候能被用来替代另一个对象。
C++中接口继承的标准方法是公有继承一个含 (纯)虚成员函数的类。 C++中纯接口继承接近于公有继承纯抽象类,纯实现继承或纯类继承接近于私有继承。
可复用的面向对象设计的第一个原则:针对接口编程,而不是针对实现编程。

运用复用机制
面向对象系统中功能复用的两种最常用技术是类继承和对象组合(object composition)。
面向对象设计的第二个原则:优先使用对象组合,而不是类继承。
委托与参数化类型关联运行时刻和编译时刻的结构设计应支持变化
获得最大限度复用的关键在于对新需求和已有需求发生变化时的预见性,要求你的系统设计要能够相应地改进。

怎样选择设计模式?

考虑设计模式是怎样解决设计问题的
浏览模式的意图部分
研究模式怎样互相关联
研究目的相似的模式
检查重新设计的原因
考虑你的设计中哪些是可变的

怎样使用设计模式?
1) 大致浏览一遍模式,特别注意其适用性部分和效果部分,确定它适合你的问题。
2) 回头研究结构部分、参与者部分和协作部分,确保你理解这个模式的类和对象以及它们是怎样关联的。
3) 看代码示例部分,看看这个模式代码形式的具体例子,研究代码将有助于你实现模式。
4) 选择模式参与者的名字,使它们在应用上下文中有意义,设计模式参与者的名字通常过于抽象而不会直接出现在应用中。然而,将参与者的名字和应用中出现的名字合并起来是
很有用的。这会帮助你在实现中更显式的体现出模式来。
5)定义类,声明它们的接口,建立它们的继承关系,定义代表数据和对象引用的实例变
量。识别模式会影响到的你的应用中存在的类,做出相应的修改。
6)定义模式中专用于应用的操作名称这里再一次体现出,名字一般依赖于应用。使用与每一个操作相关联的责任和协作作为指导。还有,你的名字约定要一致
7)实现执行模式中责任和协作的操作实现部分提供线索指导你进行实现。代码示例部分的例子也能提供帮助。