Blog信息 |
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7587764 建立时间:2006年5月29日 |

| |
[设计模式]『蚂蚁学模式』之迪米特法则(LoD) 软件技术
lhwork 发表于 2007/1/10 9:39:58 |
一个对象应当对其他对象有尽可能少的了解。
11.1 迪米特法则的各种表述: 1)只与你直接的朋友们通信。 2)不要跟“陌生人”说话。 3)每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
11.2 狭义的迪米特法则 如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。
朋友圈的确定 “朋友”条件: 1)当前对象本身(this) 2)以参量形式传入到当前对象方法中的对象 3)当前对象的实例变量直接引用的对象 4)当前对象的实例变量如果是一个聚集,那么聚集中的元素也都是朋友 5)当前对象所创建的对象 任何一个对象,如果满足上面的条件之一,就是当前对象的“朋友”;否则就是“陌生人”。 缺点:会在系统里造出大量的小方法,散落在系统的各个角落。
与依赖倒转原则互补使用
1 |
|
[设计模式]『蚂蚁学模式』之实例化建造者模式 软件技术
lhwork 发表于 2007/1/10 9:25:51 |
建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
UML图示:
1. com.cleversoft.designpatterns.builder2.PostalClert.java:
| |
[设计模式]『蚂蚁学模式』之实例化适配器(Adapter)模式 软件技术
lhwork 发表于 2007/1/10 9:23:22 |
结构模式:描述如何将类或者对象组合在一起形成更大的结构。
适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 使用场合: 1)系统需要使用现有的类,而此类的接口不符合系统的需要。 2)想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。这些源类不一定有很复杂的接口。 3)(对对象的适配器模式而言)在设计里,需要改变多个已有的子类的接口,如果使用类的适配器模式,就要针对每一个子类做一个适配器类,而这不太实际。
类/对象的适配器模式: 1. com.cleversoft.designpatterns.adapter.Target.java:
| |
[设计模式]Java与模式 --- 适配器模式 软件技术
lhwork 发表于 2007/1/9 8:48:37 |
适配器模式: 如果你有两个编译好的(无源代码)类,类A有某些功能,但是需要一个xml读取模块才能工作, 这个模块要实现这个接口: public interface XmlReader{ public InputStream xmlReader(); } 你的另一个类B恰好有这个功能,但是B实现的是这个接口: public interface ReaderXml{ public InputStream readerXml(); } 这个时候我们的做法是写个适配器 public class Adapter implements XmlReader extends B{ public InputStream xmlReader(){ &n |
|
[设计模式]用AOP实现观察者模式 软件技术
lhwork 发表于 2006/12/30 10:07:14 |
观察者(Observer)模式 用途:定义对象之间的一对多依赖关系,因此,当一个对象的状态发生改变时,其所有依赖项都会得到通知,并自动更新。 它是 OO 设计模式的皇后。该模式被人们广泛应用(特别是在 GUI 应用程序中),并构成了 MVC 架构的关键部分。它处理复杂的问题,而在解决这类问题方面表现得相对较好。但是,从实现需要的努力和代码理解的角度来说,它还是带来了一些难以解决的难题。 不足:观察者(Observer)模式要求您先侵入系统中现有的类,然后才能支持该模式 —— 至少在 Java 语言中是这样。 而方面可以降低像观察者(Observer)模式这种侵入性模式的负担,使得模式参与者更灵活,因为不需要包含模式代码。而且,模式本身可以变成抽象的基本方面,允许开发人员通过导入和应用它来实现重用,不必每次都要重新考虑模式。 下面通过一 |
|
|