public static void main(String[] args) {
/*
* 用GG追MM来举例子
* 礼物分为:温柔型和狂野型
* WarmGift(温柔型的礼物) 和 WildGift(狂野型的礼物)
* WarmFlower WildFlower
* WarmBook WildBook
* 如果再有别的抽象类。ColdGift(冷酷型的礼物)
* 就会产生爆炸势的增长
*
* 使用桥接模式来完成:
* 分离抽象与具体实现,让他们可以独自发展
* Gift --》WarmGift ColdGift WildGift
* GiftImpl --> Flower Ring Car
* 用聚合代替继承
* */
GG gg = new GG();
gg.chase(new MM());
}
哥哥追美眉的过程送礼物
public class GG {
// 哥哥追美眉的方法,送了一个温暖的礼物,具体是什么,然后你传递具体
// 的礼物实现,下面这个GG传递的就是花
public void chase(MM mm) {
Gift gift = new WarmGift(new Flower());
give(mm, gift);
}
//送礼物
public void give(MM mm, Gift gift) {
System.out.println(gift.impl + " ---- gived!");
}
}
美眉
public class MM {
public String name;
}
一个抽象的礼物里面聚合了一个礼物的实现类
public abstract class Gift {
GiftImpl impl;
}
礼物实现类
public class GiftImpl {
}
温暖型的礼物,是一个比较抽象的礼物
public class WarmGift extends Gift {
public WarmGift(GiftImpl impl){
this.impl = impl;
}
}
狂野型的礼物,也是一个比较抽象的礼物
public class WildGift extends Gift {
public WildGift(GiftImpl impl){
this.impl = impl;
}
}
具体的礼物实现,花,它可以定义成一个温暖型的礼物
public class Flower extends GiftImpl {
}
具体的礼物实现,书,它你可以定义成温暖的书或者狂野的书
public class Book extends GiftImpl {
}