配器模式

    
liubing76 03-05-14

配器模式的比喻不知是否正确,
你的女朋友希望你是一个大款,但是你不是,可以你有个有钱的老爸,这怎么办?
于是可以你当作适配器,你可以继承你爸的财产,变成一个大款,于是你女朋友比较满意OK.这是类适配器模式。(三种角色,大款 ,你,你老爸)
如果你不继承财产,你可以支配你老爸,使他完全由你控制,于是你女朋友看你也是一个大款,因为有使用权。这是对象适配模式。


你女朋友希望的接口,有钱而且年轻
public interface RicherAndYoungth
{
/**
* @roseuid 3EC050030096
*/
public void haveMuchMoney();
/**
* @roseuid 3EC05013023D
*/
public void isYouth();
}

你现在,仅年轻,但是没有钱
public class You{

public void isYouth(){
System.out.println("我年轻而且很帅!!");
}
}

你老爸很有钱
public class YourFather
{
/**
* @roseuid 3EC050580323
*/
public void haveMuchMoney() {

}
}



=====================

把你作为适配器,继承老爸的遗产,使用类适配器
public class You extend YourFather implements RicherAndYoungth{

//自己实现的
public void isYouth(){
System.out.println("我年轻而且很帅!!");
}
//有钱是继承父类的
}

把你作为适配器,直接支配老爸的财产,使用对象适配器
public class You implements RicherAndYoungth{
private YourFather father=new YourFather();

//自己实现的
public void isYouth(){
System.out.println("我年轻而且很帅!!");
}
//有钱是使用对象的
public void haveMuchMoney() {
father.haveMuchMoney();
}
}


1
banq
2003-05-14 17:33

哈哈,有意思,从某种程度上比较合适。

注意适配模式有一个隐含目的,就以你的例子说,女朋友初衷是看中某人爸的钱,于是想和某人爸结合,但是因为某种原因不能结合,故而通过某人把作适配器,拿钱的目的也达到了。

liubing76
2003-05-16 12:57

但是适配器,完成适配的同时,一般也增加某种功能,如适配器
的年轻,并且有时适配器可以适配多个源功能。

同时你也可以这样理解,适配器为了达到客户端的希望接口,而自发的寻找源实现,然后自己在完成适配,从而达到客户的希望。
如老板希望你既懂java技术,又要有完成销售指标,于是你只好找个哥们代替你完成销售的指标,这就是古人云“善加于物也”。老板它不关你怎样实现销售指标。

liubing76
2003-05-16 12:59

适配器,可以 所有问题也不要自己扛,可以委托就委托。

liubing76
2003-05-16 13:02

适配器,自己有能力做的,就自己做,不可实现的就委托。
这与proxy模式的根本区别,而proxy模式,都是委托给别人,自己仅做一点表面工作

2Go 1 2 下一页