Terry's blog

Focus on bigdata and cloud.

博客园 首页 新随笔 联系 订阅 管理
  383 随笔 :: 1 文章 :: 268 评论 :: 83万 阅读

09 2007 档案

摘要:对象状态影响对象行为: 对象拥有不同的状态,往往会行使不同的行为... 动机: 在软件构建过程中,某些对象的状态如果改变以及其行为也会随之而发生变化,比如文档处于只读状态,其支持的行为和读写状态支持的行为就可能完全不同。 如何在运行时根据对象的状态来透明更改对象的行为?而不会为对象操作和状态转化之间引入紧耦合? 意图: 允许一个对... 阅读全文
posted @ 2007-09-29 14:38 王晓成 阅读(7774) 评论(1) 推荐(0) 编辑

摘要:类层次结构的变化: 类层次结构中可能经常由于引入新的操作,从而将类型变得脆弱... 动机: 在软件构建过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的更改,将会给子类带来很繁重的变更负担,甚至破坏原有设计。 如何在不更改类层次结构的前提下,在运行时根据需要透明地为类层次结... 阅读全文
posted @ 2007-09-28 16:07 王晓成 阅读(5879) 评论(0) 推荐(0) 编辑

摘要:算法与对象的耦合: 对象可能经常需要使用多种不同的算法,但是如果变化频繁,会将类型变得脆弱... 动机: 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。 如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题?意图: 定义一系统的算法,把它们一个个封装起来,并且使... 阅读全文
posted @ 2007-09-27 16:25 王晓成 阅读(6642) 评论(1) 推荐(0) 编辑

摘要:对象状态的回溯: 对象状态的变化无端,如何回溯/恢复对象在某个点的状态? 动机: 在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些公有接口来让其他对象得到对象的状态,便会暴露对象的细节实现。 如何实现对象状态的良好保存与恢复?但同时又不会因此而破坏对... 阅读全文
posted @ 2007-09-26 14:24 王晓成 阅读(4107) 评论(1) 推荐(0) 编辑

摘要:动机(Motivate): 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显示指定,将必不可少地带来请求发送者与接受者的紧耦合。 如何使请求的发送者不需要指定具体的接受者?让请求的接受者自己在运行时决定来处理请求,从而使两者解耦。意图(Intent): 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这... 阅读全文
posted @ 2007-09-25 16:47 王晓成 阅读(4935) 评论(1) 推荐(0) 编辑

摘要:依赖关系的转化: 动机(Motivate): 在软件构建过程中,经常会出现多个对象互相关联交互的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化。 在这种情况下,我们可使用一个“中介对象”来管理对象间的关联关系,避免相互交互的对象之间的紧耦合引用关系,从而更好地抵御变化。意图(Intent): 用一个中介对象来封装一系列... 阅读全文
posted @ 2007-09-24 15:25 王晓成 阅读(5510) 评论(1) 推荐(0) 编辑

摘要:动机(Motivate): 在软件构建过程中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化。 在这种情况下,将特定领域的问题表达为某种文法规则下的句子,然后构建一个解释器来解释这样的句子,从而达到解决问题的目的。意图(Intent): 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。结构图(... 阅读全文
posted @ 2007-09-20 16:47 王晓成 阅读(5740) 评论(1) 推荐(0) 编辑

摘要:动机(Motivate): 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” --------一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。意图(Intent): 定义对象间的一... 阅读全文
posted @ 2007-09-19 17:52 王晓成 阅读(12433) 评论(14) 推荐(2) 编辑

摘要:Shift+Alt+Enter: 切换全屏编辑 Ctrl+B,T / Ctrl+K,K: 切换书签开关 Ctrl+B,N / Ctrl+K,N: 移动到下一书签 Ctrl+B,P: 移动到上一书签 Ctrl+B,C: 清除全部标签 Ctrl+I: 渐进式搜索 Ctrl+Shift+I: 反向渐进式搜索 Ctrl+F: 查找 Ctrl+Shift+F: 在文件中查找 F3: 查找下一个... 阅读全文
posted @ 2007-09-18 17:42 王晓成 阅读(430) 评论(0) 推荐(0) 编辑

摘要:动机(Motivate): 在软件构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为“ 同一种算法在多种集合对象上进行操作”提供了可能。 使用面向对象技术将这种遍历机制抽象为“迭代器对象”为“应对变化中的集合对象”提供了一种优雅的方法。 意图(Intent): ... 阅读全文
posted @ 2007-09-18 10:43 王晓成 阅读(5252) 评论(0) 推荐(0) 编辑

摘要:耦合与变化: 耦合是软件不能抵御变化灾难的根本性原因。不仅实体对象与实体对象之间存在耦合关系,实体对象与行为操作之间也存在耦合关系。 动机(Motivate): 在软件系统中,“行为请求者”与... 阅读全文
posted @ 2007-09-17 17:49 王晓成 阅读(7308) 评论(0) 推荐(0) 编辑

摘要:面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。 谈到面向对象,这方面的文章非常多。但是,明确地给出对象的定义或说明对象的定义的非常少——至少我现在还没有发现。其初,̶... 阅读全文
posted @ 2007-09-14 16:36 王晓成 阅读(2041) 评论(3) 推荐(1) 编辑

摘要:string str =""初始化对象分配空间 而string str=null初始化对象 更详细的解释 这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的。string str2=null,这样定义后,只是定义了一个string 类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,将报错。 阅读全文
posted @ 2007-09-14 15:23 王晓成 阅读(2625) 评论(0) 推荐(1) 编辑

摘要:(1)new 运算符 用于创建对象和调用构造函数。 (2)new 修饰符 用于隐藏基类成员的继承成员。 (3)new 约束 用于在泛型声明中约束可能用作类型参数的参数的类型。 new 运算符 1.用于创建对象和调用构造函数 例:Class_Test MyClass = new Class_Test(); 2.也用于为值类型调用默认的构造函数 例:int myInt = new int(... 阅读全文
posted @ 2007-09-14 15:12 王晓成 阅读(761) 评论(0) 推荐(0) 编辑

摘要:方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。 当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。 若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。 不必初... 阅读全文
posted @ 2007-09-14 14:44 王晓成 阅读(894) 评论(0) 推荐(0) 编辑

摘要:无处不在的Template Method 如果你只想掌握一种设计模式,那么它就是Template Method! 动机(Motivate): 变化 -----是软件设计的永恒主题,如何管理变化带来的复杂性?设计模式的艺术性和复杂度就在于如何 分析,并发现系统中的变化和稳定点,并使用特定的设计方法来应对这种变化。 意图(Intent): 定义一个操作中的算法的骨架,而将一些... 阅读全文
posted @ 2007-09-14 11:21 王晓成 阅读(7910) 评论(1) 推荐(3) 编辑

摘要:[.NET(C#)] 把attribute翻译成特性,用来标识类,方法 把property翻译为属性,性质,用于存取类的字段 把markup翻译成标记,tag还是翻译成标签比较好 [.NET(C#)] .NET Framework的核心是其运行库的执行环境。 称为公共语言运行库(CLR)或.NET运行库. 通常将在CLR的控制下运行的代码称为托管代码(managed code). 在CLR执行开发... 阅读全文
posted @ 2007-09-14 09:41 王晓成 阅读(2033) 评论(1) 推荐(0) 编辑

摘要:虚拟方法,由virtual声明,它允许在派生类中重写,也可以不重写。如果在派生类中重写时要声明override. Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 1 public class myclass 2 { ... 阅读全文
posted @ 2007-09-14 09:33 王晓成 阅读(787) 评论(0) 推荐(0) 编辑

摘要:直接与间接: 人们对复杂的软件系统常有一种处理手法,即增加一层间接层,从而对系统获得一种更为灵活、 满足特定需求的解决方案。 动机(Motivate... 阅读全文
posted @ 2007-09-13 12:42 王晓成 阅读(6635) 评论(0) 推荐(1) 编辑

摘要:面向对象的代价 面向对象很好地解决了系统抽象性的问题,同时在大多数情况下,也不会损及系统的性能。但是,在 某些特殊的应用中下,由于对象的数量太大,采用面向对象会给系统带来难以承受的内存开销。比如: 图形应用中的图元等对象、字处理应用中的字符对象等。 动机(Motivate): 采用纯粹对象方案的问题在于大量细粒度的对... 阅读全文
posted @ 2007-09-12 11:29 王晓成 阅读(5667) 评论(0) 推荐(0) 编辑

摘要:LINQ是什么? 它是Language Integrated Query。 当我们要对数据库表进行查询的时候,我们一定会编写 "select * from sometable where ID = .."的语句。好,那我们现在根据LINQ的语法,完全可以将我们熟悉的SQL中像"select","from","where"等语句在.NET Framework环境中顺利使用并且大大提高开发的效率。 下... 阅读全文
posted @ 2007-09-11 17:33 王晓成 阅读(641) 评论(0) 推荐(0) 编辑

摘要:动机(Motivate): 在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦? 意图(Intent): 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 ... 阅读全文
posted @ 2007-09-11 11:49 王晓成 阅读(6822) 评论(1) 推荐(0) 编辑

摘要:动机(Motivate): 组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。 意图(Intent): 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite模式使得用户对单个对象和组合对象的使用具有一致性。 ... 阅读全文
posted @ 2007-09-07 16:30 王晓成 阅读(8229) 评论(0) 推荐(0) 编辑

摘要:子类复子类,子类何其多 假如我们需要为游戏中开发一种坦克,除了各种不同型号的坦克外,我们还希望在不同场合中为其增加以下一种或多种功能;比如红外线夜视功能,比如水陆两栖功能,比如卫星定位功能等等。按类继承的作法如下: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.c... 阅读全文
posted @ 2007-09-06 15:55 王晓成 阅读(8544) 评论(0) 推荐(2) 编辑

摘要:动机(Motivate): 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度? 意图(Intent): 将抽象部分与实现部分分离,使它们都可以独立的变化。 ... 阅读全文
posted @ 2007-09-05 14:32 王晓成 阅读(8625) 评论(0) 推荐(2) 编辑

摘要:适配(转换)的概念无处不在...... 适配,即在不改变原有实现的基础上,将原先不兼容的接口转换为兼容的接口。 例如:二转换为三箱插头,将高电压转换为低电压等。 动机(Motivate): 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。 那么如何应对这种“迁移的变化”?如何既能利用现有对象的... 阅读全文
posted @ 2007-09-04 16:47 王晓成 阅读(11935) 评论(0) 推荐(1) 编辑

摘要:依赖关系倒置: 动机(Motivate): 在软件系统中,经常面临着“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。 如何应对这种变化?如何向“客户程序(使用这些对象的程序)"隔离出“这些易变对象”,从而使得“依赖这些易变对象的客户程序”不随着需求改... 阅读全文
posted @ 2007-09-03 11:37 王晓成 阅读(11530) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示