4) 对象的实现基于接口编写,所以实现上存在较少的依赖关系。
1) 子类可以直接重定义父类的操作。
1.1 设计模式怎样解决设计问题
1.1.1 寻找合适的对象
2、 委托
面向对象设计最困难的部分是将系统分解为对象的集合。
2) 编译时刻决定了,无法在运行期间更改。
委托时一种组合方法,它是组合具有与继承同样的能力。
3) 子类要知道父类的实现细节,这样就部分破坏了封装性。子类和父类依赖过于紧密,1.76传奇私服,父类的某些变化必然导致子类的变化。开发过程中遇到过类似的问题。这种依赖,1.76传奇私服,限制了灵活性以及复用性。比如,服务体系中经常出现这样的问题,导致代码拷贝。
前面的数字对应书中相应的章节。
面向对象设计的第二个原则:优先使用对象组合,而不是类继承。
2、 实例化:虚线箭头表示一个类实例化另外一个对象。
1、 对象:最上面的黑体表示类名,下面依次是操作,数据。
下载路径在CSDN的资源栏目,地址为:
委托的主要优点在于它便于在运行时刻组合对象操作,以及更改操作的组合方式。它是软件更加的灵活。
组合(通过获得对象的引用而在运行时刻动态的定义)的优缺点:
虽然书可能要到月底才会在书店上劲舞团sf,但在此之前,还是先将和书配套的相关源代码开放出来,天龙八部私服,方便一些有需要的朋友作为参考。
类的继承和接口的继承的差别:
设计的许多对象来源于现实世界的分析模型,这里和领域驱动设计有点关联。分析所得到的类,很多事现实中并不存在的类。这是抽象的结果。设计中的抽象对于产生灵活的设计至关重要。就像我设计的一个流程调度模型。
4、
类和类型紧密相连,类定义了对象的操作,也定义了对象的类型。
3、 继承和参数化类型的比较
1、 继承和组合的比较
重点:
3) 运行时刻可以使用另外一个对象替换这个对象,提高了灵活性。
变化是导致重新设计的原因。设计要对一定范围内的变化友好。
1.1.5 运用复用机制
2) 对象只能通过接口访问,不要也不能知道对方细节,这样不会破坏封装性。
压缩包里面的文件夹列表如下:
3、 继承:竖线和三角表示继承关系。
对象组合彼此不知道对方内部细节,成为黑箱复用。
1.1.3 指定对象接口
1.1.4 描述对象实现
继承的优缺点:
2、 对接口编程,而不是对实现编程——面向对象设计的第一个原则
1.5 CWndBase ---- 基础的窗口类
1.6.3 CReg ---- 注册表读写
2.10 Transparet ---- 透明显示
2.3 CMemDC ---- 缓存DC
2.5 IPhoneEffect ---- 模拟IPhone滑动效果
2.6 CImager ---- 用COM技术绘制图片
2.7 DrawGif ---- 绘制动态gif
2.8 WriteBmp ---- 保存屏幕为bmp图片
3.2 Record ---- 录音
3.3 CMedia ---- 播放多媒体文件
4.6 MyInputMethod ---- 输入法
4.7.2 LoadCOM ---- 加载COM
4.8.2 CHandwriteRecognizer ---- 手写输入
5.3.2 SimpleCPL ---- 简单的控制面板
6.3.3 EasyDriver ---- 简单的驱动
6.6 VirtualSerial ---- 虚拟串口驱动
6.7 FakeDriver ---- 伪驱动
7.4.4 CPowerThread ---- 电源信息获取
8.3.1 TCC79xReg ---- TCC79x的寄存器操作
10.1 SysVolume ---- 系统音量设置
12.4 Coexist ---- Win32和WinCE工程共存样例
12.6 CBaseFunc ---- 用类简化代码移植范例
1.1.2 决定对象的粒度
4、 抽象类:类名以黑体斜体表示,操作也用斜体表示。
记笔记可以让我达到沉流的状态。
和其他的技术方案相同,它也存在不足之处:增加了软件的复杂度——动态的,高度参数化的软件比静态的软件更难于理解。
5、 引用
OMT表示法:
1.1.6 关联运行时刻的结构和编译时刻的结构
1.1.7 设计应支持变化
对象的类定义了对象是怎样实现的,同时也定义了对象内部状态和操作的实现。对象的类型只与它的接口有关。一个对象可以由多个类型(支持多个接口),不同类的对象可以有相同的类型。
c++中接口继承接近于公有继承纯抽象类。纯实现继承或纯类继承接近于私有继承。
箭头加黑点表示一个类引用另外一个类。
理想的情况下,应该通过组合原有构件实现新的功能,而不是创建新的构件。
1) 对象间通过接口彼此交互。