这是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简介而优雅的解决方案。
这不是一本读完一遍就可以束之高阁的书。我们希望你在软件设计过程中反复参阅此书,以获取设计灵感。
学习这些模式,将有助于读者设计出优秀的面向对象设计。
)
动态绑定是指发送的请求直到运行时刻才受你的具体的实现的约束。
然后,我们的经验表明:设计者往往过度使用了继承这种复用技术。但一来于对象组合技术的设计却欧根号的复用性(或更简单)。你将会看到设计模式中一再使用对象组合技术。
类继承和组合的比较
类继承(白箱复用):是一个通过复用父类功能而扩展应用功能的基本机制。“白箱”是相对可视性而言,在继承方式中,父类的内部细节对子类可见。
对象组合(黑箱复用):多个对象通过组装或组合来实现新的更复杂的功能。“黑箱”是相对可视性而言,对象的内部细节是不可见的。
优缺点比较
今天看到了第24页,明天继续!
这不是一本读完一遍就可以束之高阁的书。我们希望你在软件设计过程中反复参阅此书,以获取设计灵感。
学习这些模式,将有助于读者设计出优秀的面向对象设计。
每一个模式描述了一个在我们周围不断重复发生的问题以及该问题的解决方案的核心。
动态绑定是指发送的请求直到运行时刻才受你的具体的实现的约束。
第一个原则:对接口编程,而不是对实现编程。
不将变量声明为某个特定的具体类的实现对象,而是让它遵从抽象类所定义的接口。创建型模式确保你的系统是采用针对接口的方式书写的,而不是针对实现的书写的。
第二个原则:优先使用对象组合,而不是类继承。然后,我们的经验表明:设计者往往过度使用了继承这种复用技术。但一来于对象组合技术的设计却欧根号的复用性(或更简单)。你将会看到设计模式中一再使用对象组合技术。
类继承和组合的比较
类继承(白箱复用):是一个通过复用父类功能而扩展应用功能的基本机制。“白箱”是相对可视性而言,在继承方式中,父类的内部细节对子类可见。
对象组合(黑箱复用):多个对象通过组装或组合来实现新的更复杂的功能。“黑箱”是相对可视性而言,对象的内部细节是不可见的。
优缺点比较
优缺点 | 类继承 | 对象组合 |
---|---|---|
优点 | 在编译时静态定义,可以直接使用。 | 不破坏封装性,对于类的依耐性较少 |
缺点 | 由于在编译时刻就定义了,无法在运行时改变从父类继承的实现。 子类可以覆盖父类的实现细节,破破坏了封装性。依赖过于紧密,不够灵活。 | 父类的复用系数不高 |
委托
委托(delegation)是一种组合方法,它使组合具有与继承同样的复用能力。在委托方式下,有两个对象参与处理一个请求,接受请求的对象将操作委托给它的代理者(delegate)。这类似与子类将请求交给它的父类处理。今天看到了第24页,明天继续!