配器模式

配器模式的比喻不知是否正确,
你的女朋友希望你是一个大款,但是你不是,可以你有个有钱的老爸,这怎么办?
于是可以你当作适配器,你可以继承你爸的财产,变成一个大款,于是你女朋友比较满意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();
}
}


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

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

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

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

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

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

我觉得You不必要extends YourFather 类,这样比较好:

You implements YoungAndRich{
private YourFather father = null;
public You(YourFather father){
this.father = father;

}
}

这会灵活一些,构造函数的参数YourFather也可以是一个接口,比如
Interface OneRichMan 这个有钱的人可以是你的老爸或你哥哥也可
以是任何人(只要他有钱),