Rayman的专栏
MSN: fyzhao2004@hotmail.com
登录
注册
全站
当前博客
空间
博客
好友
相册
论坛
留言
用户操作
[即时聊天]
[发私信]
[加为好友]
赵凤阳
ID:fyzhao
共
34140
次访问,排名
3604
,好友
0
人,关注者
0
人。
fyzhao的文章
原创 47 篇
翻译 0 篇
转载 14 篇
评论 8 篇
最近评论
vvukqr:
WoW Gold
pz0513:
非常好,谢谢!
flushtime:
这一系列的文章写的很不错,赞一个~
楼主还会继续写下去么?
wuhao09112003:
第二棵树模拟的真好!
wuhao09112003:
刚做了个分形的东西,就是不会生成雪花,表达式不对,看了之后,原来 一开始的字符串要:F++F++F 替代字符串要:F-F++F-F! 懂了,谢谢~~
文章分类
3D
(RSS)
DirectFB
(RSS)
Java虚拟机
(RSS)
Linux应用
(RSS)
Python
(RSS)
SIP
(RSS)
X11 & XFree86
(RSS)
分形
(RSS)
嵌入式Linux
(RSS)
设计模式
(RSS)
网络安全
(RSS)
文字编码
(RSS)
收藏
相册
分形
存档
2008年11月(6)
2008年10月(6)
2008年09月(1)
2008年08月(4)
2008年07月(1)
2007年04月(1)
2007年01月(6)
2006年12月(10)
2006年11月(15)
2006年09月(5)
2006年08月(7)
软件项目交易
订阅我的博客
缺省适配模式
收藏
新一篇: 合成模型模式
|
旧一篇: SIP协议是如何胜过H.323协议的?
在很多情况下,必须让一个具体类实现某一个接口,但是这个类又用不到接口所规定的所有的方法。通常的处理方法是,这个具体类要实现所有的方法,那些有用的方法要有实现,那些没有用的方法也要有空的、平庸的实现。这些空的方法是一种浪费,有时也是一种混乱。
适配器模式可以很好地处理这一情况。可以设计一个抽象的适配器类实现接口,此抽象类要给接口所要求的每一种方法都提供一个空的实现,些抽象类可以使它的具体子类免于被迫实现空的方法。
缺省适配模式的中心是一个缺省适配类。这个类应当是抽象类,国为这个类不应当实例化,它的实例也没有用处。但是它所提供的方法却应当是具体的方法,而不是抽象的方法,因为按照模式的用意,这些方法之所以存在,就是为了提供默认实现,以便缺省适配类的具体子类可以按照需要只实现需要实现的方法,忽略不需要实现的方法。
Java类库中的WindowAdapter就是一个缺少适配的例子,它是WindowListener接口的缺省适配类,当用户的窗口继承它时,就不用去实现WindowListener的所有方法,只要实现所感兴趣的就行了。
下面是模仿WindowAdapter的示意程序:
package
defaultadapter;
public
interface
MyWindowListener
...
{
public
void
open();
public
void
close();
public
void
activate();
}
package
defaultadapter;
/** */
/**
* 不使用缺省适配模式的窗口类,必须要实现接口所规定的所有方法
*/
public
class
BadFrame
implements
MyWindowListener
...
{
public
void
open()
...
{
//
TODO Auto-generated method stub
}
public
void
close()
...
{
//
TODO Auto-generated method stub
}
public
void
activate()
...
{
//
TODO Auto-generated method stub
}
}
package
defaultadapter;
/** */
/**
* 缺省适配类,为想要实现MyWindowListener功能的类提供默认的空方法,使其子类只需要关心感兴趣的方法。
*/
public
abstract
class
MyWindowAdatper
implements
MyWindowListener
...
{
public
void
open()
...
{
//
TODO Auto-generated method stub
}
public
void
close()
...
{
//
TODO Auto-generated method stub
}
public
void
activate()
...
{
//
TODO Auto-generated method stub
}
}
package
defaultadapter;
/** */
/**
* 使用缺省适配模式的窗口类,只要实现感兴趣的方法就行了。
*/
public
class
GoodFrame
extends
MyWindowAdatper
...
{
public
void
open()
...
{
System.out.println(
this
+
"
.open()
"
);
}
public
static
void
main(String[] args)
...
{
(
new
GoodFrame()).open();
}
}
发表于 @
2006年11月15日 11:09:00
|
评论(
loading...
)
|
编辑
新一篇: 合成模型模式
|
旧一篇: SIP协议是如何胜过H.323协议的?
评论
#
pz0513 发表于2008-04-15 08:50:14 IP: 121.32.164.*
非常好,谢谢!
发表评论
姓 名:
主 页:
校验码:
看不清,换一张
当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击
登录