Terry's blog

Focus on bigdata and cloud.

博客园 首页 新随笔 联系 订阅 管理

2007年9月4日 #

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

2007年9月3日 #

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

2007年8月31日 #

摘要: 耦合关系: 动机(Motivation): 在软件系统中,由于需求的变化,"这个对象的具体实现"经常面临着剧烈的变化,但它却有比较稳定的接口。 如何应对这种变化呢?提供一种封装机制来隔离出"这个易变对象"的变化,从而保持系统中"其它依赖的对象"不随需求的变化而变化。 意图(Intent): 定义一个用户创建对象的接口,让子类决定实例哪一个类。Facto... 阅读全文
posted @ 2007-08-31 11:29 王晓成 阅读(16849) 评论(2) 推荐(2)

2007年8月30日 #

摘要: Builder模式的缘起: 假设创建游戏中的一个房屋House设施,该房屋的构建由几部分组成,且各个部分富于变化。如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正.....动机(Motivation): 在软件系统中,有时候面临一个"复杂对象"的创建工作,其通常由各个部分的子对象用一定算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合到一... 阅读全文
posted @ 2007-08-30 17:37 王晓成 阅读(19710) 评论(6) 推荐(1)

2007年8月29日 #

摘要: 常规的对象创建方法:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--//创建一个Road对象Roadroad=newRoad();new 的问题: 实现依赖,不能应对“具体实例化类型”的变化。解决思路: 封装变化点-----哪里... 阅读全文
posted @ 2007-08-29 17:25 王晓成 阅读(27012) 评论(4) 推荐(3)

2007年8月28日 #

摘要: 创建型模式---单件模式(Singleton Pattern)动机(Motivation): 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。 如何绕过常规的构造器,提供一种机制来保证一个类只创建一个实例? 这应该是类设计者的责任,而不是类使用者的责任。结构图: 意图: 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 -... 阅读全文
posted @ 2007-08-28 17:43 王晓成 阅读(38664) 评论(5) 推荐(7)

摘要: 01 : 所有数据都应该隐藏在所在的类的内部。 02 : 类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。 03 : 尽量减少类的协议中的消息。 04 : 实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析等等]。 05 : 不要把实现细节(例如放置共用代码的私有函数)放到类的公有接口中。如果类的两个方法有一段公共代码,那么... 阅读全文
posted @ 2007-08-28 10:36 王晓成 阅读(798) 评论(0) 推荐(0)

摘要: 代码复用的规则 代码复用是绝大多数程序员所期望的,也是OO的目标之一。总结我多年的编码经验,为了使代码能够最大程度上复用,应该特别注意以下几个方面。 对接口编程 "对接口编程"是面向对象设计(OOD)的第一个基本原则。它的含义是:使用接口和同类型的组件通讯,即,对于所有完成相同功能的组 件,应该抽象出一个接口,它们都实现该接口。具体到JAVA中,可以是接口(interface),或者是... 阅读全文
posted @ 2007-08-28 10:16 王晓成 阅读(1657) 评论(0) 推荐(0)

摘要: 单一职责原则(SRP):对一个类而言,应该仅有一个引起它变化的原因。 开放-封闭原则(OCP):软件实体(类,模块,函数等等应该是可以扩展的,但是不可修改的。 Liskov替换原则(LSP):了类型必须能够替换掉它的基类型。 依赖倒置原则(DIP): a.高层模块不应该依赖于低层模块,二者都应该依赖于抽象。 b.抽象不应该依赖于细节,细节应该依赖于抽象。 接口隔离原则(ISP):不应该强迫客户依... 阅读全文
posted @ 2007-08-28 09:15 王晓成 阅读(579) 评论(0) 推荐(0)

2007年8月16日 #

摘要: C# String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类... 阅读全文
posted @ 2007-08-16 14:41 王晓成 阅读(692) 评论(0) 推荐(0)