在适配器模式中我们提到QGarinC?jin)个x(chng)友,他每天都?x)收到如下命令?x)
1 public interface Command {
2 public void execute();
3 }
其中一部分是做饭,一部分是洗服QGarin必须亲自完成吗,不一定:(x)
1 public class CookCommand implements GirlFriendCommand {
2
3 private String mealName = null;
4
5 public CookCommand(String mealName) {
6 super();
7 this.mealName = mealName;
8 }
9
10 private MealSupplier mealSupplier = null;
11
12 public void setMealSupplier(MealSupplier mealSupplier) {
13 this.mealSupplier = mealSupplier;
14 }
15
16 @Override
17 public void execute() {
18 mealSupplier.cook(mealName);
19 }
20
21 }
真正完成做饭的是一个抽象的MealSupplier.
1 public interface MealSupplier {
2 public void cook(String name);
3 }
它可能代表的是一个饭店:(x)
1 public class Restaurant implements MealSupplier{
2
3 public Restaurant() {
4 super();
5 }
6
7 @Override
8 public void cook(String name) {
9 System.out.println("饭店烧好?/span>"+name);
10 }
11
12 }
同样的,真正z衣服的是抽象的CanWash.
1 public class WashCommand implements GirlFriendCommand {
2
3 private CanWash wash = null;
4
5 public void setWash(CanWash wash) {
6 this.wash = wash;
7 }
8
9 @Override
10 public void execute() {
11 if(wash != null){
12 wash.washClothes();
13 }
14 }
15
16 }
它代表的可能是洗机Q?br />
1 public interface CanWash {
2 public void washClothes();
3 }
1 public class WashingMachine implements CanWash {
2
3 @Override
4 public void washClothes() {
5 System.out.println("z机洗好了(jin)服");
6 }
7
8 }
Garin要做的就是坐{命令,如何执行完全不管Q?br /> 1 public class GirlFriendCommandTest {
2
3 /**
4 * @param args
5 */
6 public static void main(String[] args) {
7 BoyFriend bf = new BoyFriend("Garin");
8
9 bf.addCommand(new CookCommand("鱼香肉丝"));
10 bf.addCommand(new WashCommand());
11 bf.action();
12 }
13
14 }
执行完命令后效果如下Q?br />Garin开始执行命?br />饭店烧好?jin)鱼香肉?br />z机洗好了(jin)衣服
]]>