.Net与设计模式之笔记一

简介:

 .Net与设计模式

第一章

一、设计模式的精髓之一是将可变部分封装为对象,带来的好处是系统更加灵活,易于维护,但也大量增加了对象。如果不恰当地使用设计模式,会使系统难以调试。

二、测试难度加大,由于对象的增多和对象间关系的复杂,因此测试例的设计难度增大,特别是很逻辑上的错误可能由装配关系不当造成,并且在编译时很难发现。解决测试难度大的方法是将测试用例文档化,即绘制测试用的对象图。

三、当你的项目发现有如下问题之一时,就需要考虑重构代码,可能会有某种模式适合:

1)代码无法进行单元测试。

2)需求的变动总是导致代码的变动。

3)有重复代码存在。

4)继承层次过多。

5)隐藏的依赖过多。

总结:为了合理地使用模式,需要深入理解模式。模式不仅仅是解决方案,在使用模式时不能仅将注意力放在模式如何实现上,更重要的是理解模式存在的上下文及相关的“作用力系统”。由于设计模式没有明确指出这两个部分内容,所以要真正领会在问题、动机和实现中隐含的相关思想。

模式的使用即有好的效果,也会付出一事实上的代价。就设计模式来说,对象增加及对象关系复杂是得到好处的代价。

总之,设计模式不是万能的,不能指望设计模式的使用能提高开发的速度,或者项目的形象进度。

最后学习设计模式的最佳途径就是编程,动手实践。有很多设计模式的非软件实例,这些实例可以帮助理解设计模式,但也可能会误导。

第二章 UML与设计模式

一、 UML 类图描述类之间的关系,类图中的元素包括类包括类和接口,类之间的关系包括关联、聚合、组合和泛化。类和接口之间有实现关系,接口之间有泛化关系。

二、Pro1public属性,在UML中前面用“+”修饰。

Pro2protected属性,在UML中前面用“#”修饰

Pro3private属性,在UML中前面用“-”修饰.

       UML中抽象方法用斜体表示。

三、对象图描述的是对象之间的关联关系,在描述动态模型和构成测试用例,

对象非常有用。应当注意的是,有时系统的类图并不复杂,但对象图却很复杂。

 

第三章 面向对象软件设计的目标、原则和难点

一、设计的目标是完成需求所规定的任务,包括功能按照权利要求和性能指标,当然,这是最基本的目标。针对相同的需求,可以用很多不同的途径来实现。目前的开发速度、可理解的程度和软件的可维护性等因素是经常需要考虑的。

二、实际上,软件设计的目标是要保证在满足需求的前提下(包括功能与性能需求),还要确保软件的可维护性。即在需求变化或演化时,并且能够很方便地扩充软件设计。城可预计的时间和成本范围内完成,而不需要推翻重来。

三、在设计时首先要考虑的不是形象进度,而是系统的可维护性如下:

1 可扩展性:有了新的需求,新的性能可以容易地添加到系统中,并且不影响现有的性能,也不会带来新的缺陷。

2 可修改性:系统某一部分的代码需要修改时不会破坏系统的现有结构,也不会影响到其他部分。

3 可替换性:可以将系统中的某些类替换为相同接口的其他类,并且各级系统不受影响。

开闭原则

一、“开-闭”原则指软件实体应当对扩展开放,对修改关闭和。即软件实体应该在不修改的前提下扩展,这个原则实际上为软件设计指明了目标。我们知道软件设计应该充分考虑软件的可维护性,即需求发生变化时软件结构能够灵活地适应这种变化。就评价软件的可维护性而方,“开-闭”原则提供了一个依据。实际上,设计模式的应用就是使软件的结构在某种程度上满足“开-闭”原则。

二、面向接口编程的优势如下:

1)降低程序各部分之间的耦合性,使程序模块互换成为可能。这样客户无须知道自己使用的对象类型,只要对象有客户所期望的接口即可。并且客户也不需要知道对象是如何实现的,只要知道定义接口的抽象类。

2)使软件各部分便于单元测试,通过编制与接口一致的模拟类,可以很容易地实现软件各部分的单元测试。从而提高软件的可靠性,降低错误率。

3)易于实现软件模块的互换,软件升级时可以只部署发生变化的部分,而不会影响其他部分。

三、程序中任何可能发生变化的部分都可以封装为对象,包括命令、事件、属性、算法和状态等。封装变化是实现“开-闭”原则的重要手段,也是在设计中发现对象的重要途径。因此在分析需要时,一定要注意什么是不变的,什么是可能发生变化的,心脏这些可能的变化会对封装带来的影响。




本文转自Sam Lin博客园博客,原文链接:http://www.cnblogs.com/samlin/archive/2008/01/13/1037397.html,如需转载请自行联系原作者


目录
相关文章
|
4天前
|
设计模式 Java
【设计模式系列笔记】抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是一种设计模式,属于创建型模式之一。它提供了一种方式来创建一系列相关或相互依赖的对象,而无需指定它们具体的类。抽象工厂模式通过引入抽象的工厂接口,使得客户端代码可以使用抽象的接口来创建一组相关的产品,而不关心这些产品的具体实现。
99 4
|
1天前
|
设计模式 调度
【设计模式系列笔记】中介者模式
中介者模式(Mediator Pattern)是一种行为设计模式,它通过将对象之间的直接通信转移到一个中介对象中,来减少对象之间的耦合度。这种模式被用来处理一个对象与其他对象之间的交互,使得各对象之间不需要直接相互了解。
3 0
|
3天前
|
设计模式 Java 容器
【设计模式系列笔记】组合模式
组合模式(Composite Pattern)是一种结构型设计模式,它允许将对象组合成树状结构以表示部分-整体的层次结构。组合模式使得客户端可以统一处理单个对象和对象组合,而无需区分它们的类型。
36 12
|
3天前
|
设计模式
【设计模式系列笔记】桥接模式
桥接模式(Bridge Pattern)是一种结构性设计模式,它将抽象部分与实现部分分离,使它们可以独立变化而互不影响。桥接模式通过组合而不是继承的方式来实现这种分离。
24 6
|
3月前
|
设计模式 存储 算法
设计模式笔记
设计模式笔记
|
9月前
|
设计模式 Java Spring
设计模式笔记 -- 适配器模式
适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作,也可以叫做包装器模式
|
6月前
|
设计模式
[笔记]设计模式实践_SDLGUI封装系列之开源库SDL2_gui编译
[笔记]设计模式实践_SDLGUI封装系列之开源库SDL2_gui编译
|
8月前
|
设计模式 Java 关系型数据库
C++设计模式笔记
核心思想:从高层次角度讲,人们处理复杂性有一个通用的技术,及抽象。由于不能掌握全部的复杂对象,选择护士他的非本质细节,而去处理泛化和理想化的对象模型。
108 0
|
9月前
|
设计模式 缓存 JavaScript
|
9月前
|
设计模式 Java
设计模式笔记 -- 装饰者模式
现在有几种饮品,都是单品咖啡,顾客可以点单品咖啡也可以点单品咖啡加调料。