Terry's blog

Focus on bigdata and cloud.

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

2007年8月31日 #

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

2007年8月30日 #

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

2007年8月28日 #

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

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

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

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

2007年8月16日 #

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

2007年8月14日 #

摘要: 摘要:本文从视图、控制器、模型三个方面简要介绍了在Asp.net环境下,经典MVC设计模式的实现,并讨论了MVC设计模式的扩展,最后对MVC的优点及不足之处进行了分析。 关键词:设计模式、视图、控制器、模型 ASP.NET是微软最新推出的新型体系结构.NET框架的一部分,它为构造新一代动态网站和基于网络的分布式应用提供了强有力的支持。与以前 的 Web 开发模型相比,ASP.NET 提供了... 阅读全文
posted @ 2007-08-14 10:25 王晓成 阅读(358) 评论(0) 推荐(0) 编辑

摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->此项目名字叫Cuyahoga,是一个CMS。该项目中就使用了NHibernate0.6作为持久层。并且使用了NHibernate0.6新添加的Lazy loading特性,是学习使用NHibernate的... 阅读全文
posted @ 2007-08-14 10:11 王晓成 阅读(185) 评论(0) 推荐(0) 编辑