《JAVA与模式》这本书,一年前就买了,但说真的,当时真的是只看得懂字,看不明白道理!
所以当有空时我就又拿出来翻翻,这次对于第3章的软件可维护性与可复用性,特别有感触!
我也不想抛很多技术名词出来(开-闭 原则之类的),亲身经历告诉我,如果看的人不是自己明白其中的道理,那他看多了这种名词,就习惯的把他当口头语来用了,已经明白的人,自然有比我更高的认识。
所以我选择一种比较“俗”的方式,说出我的体会。(因为我就是一俗人)
还是回到接口上来吧,什么时候接口才能起作用?当你需要处理将来不断变化的需要时!
有这么一个场景:
某导演要拍个大片,然后开会时他对助手说出要找女一号,并对女一号要求如下:
1。全国知名女性;
2。有绝世容貌;
3。身材一流;
好了先说这3个吧。
助手根据要求去找来 某某女明星A,但助手知道,导演老人家不会一看就看中的,所以准备联系了女明星B,女明星C.
果然,导演开始觉得女明星A还不错,但是没过2天,觉得要换,(演艺圈的事谁说得清呢),这时助手马上有B,C来代替!
助手的工作应变十分的好,导演大大的有赏!
现在我们来简单分析下:
把导演对女明星的要求作为接口的定义。
该接口是三个特征的集合:
1。全国知名女性;
2。有绝市容貌;
3。身材一流;
导演只是根据符合这3个特征要人,而助手根据这3个特征去找人,显然女明星 A,B,C 必须同时符合这3个特征,(也就是实现了这个接口)
导演在不满意 女明星 A 后,能迅速找到 B ,C 做替换,助手自然是功不可没,但根本原因,是因为导演的要求是放在 特征的集合 上.
试想如果导演当初是指名到姓的要谁谁做女一号,然后找来又不满意了,要求这么具体,助手哪能那么快找来其他人代替?
下面开始要抛点名词了,我把这里导演的先见之明叫做 “依赖抽象”!
public interface 女一号{
public void 全国知明女性();
public void 有绝世容貌();
public void 身材一流();
}
public class 女明星A implements 女一号{
public void 全国知明女性(){
张某某;
}
public void 有绝世容貌(){
貌似天仙;
}
public void 身材一流(){
三围(75c,38,80)
}
public class 女明星B implements 女一号{
public void 全国知明女性(){
某某姐姐;
}
public void 有绝世容貌(){
吓死路边一头牛;
}
public void 身材一流(){
三围(80d,45,95);
}
public class 女明星C implements 女一号{
public void 全国知明女性(){
某某神仙;
}
public void 有绝世容貌(){
人见人爱;
}
public void 身材一流(){
三围(70c,35,80);
}
}
posted on 2007-05-01 12:17
我们走在JAVA的光明大道上 阅读(534)
评论(2) 编辑 收藏 所属分类:
接口的艺术