配器模式

03-05-14 liubing76
配器模式的比喻不知是否正确,

你的女朋友希望你是一个大款,但是你不是,可以你有个有钱的老爸,这怎么办?

于是可以你当作适配器,你可以继承你爸的财产,变成一个大款,于是你女朋友比较满意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模式,都是委托给别人,自己仅做一点表面工作

yycjava
2003-08-02 23:25
我觉得You不必要extends YourFather 类,这样比较好:

You implements YoungAndRich{

private YourFather father = null;

public You(YourFather father){

this.father = father;

}

}

这会灵活一些,构造函数的参数YourFather也可以是一个接口,比如

Interface OneRichMan 这个有钱的人可以是你的老爸或你哥哥也可

以是任何人(只要他有钱),

猜你喜欢