问答题答案 第1题、根据提示,我们可以量力而为。因此,我们将把miao()“适配成”wao(),catchRat()“适配成”fetchBall(), run(),sleep()不变。源代码如下:
图7. 男朋友小狗适配器的类图。 package com.javapatterns.adapter.kittie2doggie;
public interface Doggie
{
void wao();
void fetchBall();
void run();
void sleep();
void setName(String name);
String getName();
}
代码清单11. SwingUI类的源代码。红色的代码就是使用WindowAdapter的无名内部类。 package com.javapatterns.adapter.kittie2doggie;
public class Kittie {
public void miao(){}
public void catchRat() {
}
public void run() {
}
public void sleep() {
}
public String getName(){ return name; }
public void setName(String name){ this.name = name; }
}
代码清单12. SwingUI类的源代码。红色的代码就是使用WindowAdapter的无名内部类。 package com.javapatterns.adapter.kittie2doggie;
public class Boyfriend extends Kittie implements Doggie
{
public void wao()
{
this.miao();
}
public void fetchBall()
{
this.catchRat();
}
public void run()
{
super.run();
}
public void sleep()
{
super.sleep();
}
public String getName()
{
return super.getName();
}
public void setName(String name)
{
super.setName(name);
}
}
代码清单13. SwingUI类的源代码。红色的代码就是使用WindowAdapter的无名内部类。 怎么,她不满意呀?那也有办法:把wao(),fatchBall()当作新的方法,在变压器类中实现。由于你扮演变压器角色, 当她调用wao(),fatchBall()方法是,你就叫一声,或把球捡回来就可以了。
你不满意呀?那就再去找一只真正的小狗吧。变压器模式的威力就到此为止了。
第2题、这里使用的是类形式的变压器模式。
第3题、我的一个学生告诉我,理解这个问题的关键,即男朋友必须装小狗。
第4题、使用类形式的结果是,她一旦想要另一个宠物,她就得换一个男朋友。 使用实例形式的变压器模式的结果是,她如果想要另一个宠物,原来的男朋友就得身兼几种身份。
