打字猴:1.700480702e+09
1700480702 star.act(“前十五分钟,明星本人演戏”);
1700480703
1700480704 //导演把一个普通演员当做明星演员来用
1700480705
1700480706 IActor actor=new UnknownActor();
1700480707
1700480708 IStar standin=new Standin(actor);
1700480709
1700480710 standin.act(“中间五分钟,替身在演戏”);
1700480711
1700480712 star.act(“后十五分钟,明星本人演戏”);
1700480713
1700480714 }
1700480715
1700480716 }
1700480717
1700480718 运行结果如下所示:
1700480719
1700480720 =======演戏过程模拟==========
1700480721
1700480722 明星演戏:前十五分钟,明星本人演戏
1700480723
1700480724 普通演员:中间五分钟,替身在演戏
1700480725
1700480726 明星演戏:后十五分钟,明星本人演戏
1700480727
1700480728 这里使用了适配器模式,把一个普通的演员转换为一个明星演员。
1700480729
1700480730
1700480731
1700480732
1700480733 设计模式之禅 33.3.4 桥梁模式
1700480734
1700480735 我们继续说明星圈的事情,现在明星类型太多了,比如电影明星、电视明星、歌星、体育明星、网络明星等,每个类型的明星都有明确的职责,电影明星的主要工作就是演电影,电视明星的主要工作就是演电视剧或者主持电视节目。再看看现在的明星,单一发展的基本没有,主持人出专辑、体育明星演电影、歌星拍戏等太平常了,我们就用程序来表现一下多元化情形,如图33-9所示。
1700480736
1700480737
1700480738
1700480739
1700480740 图33-9 各类明星描述
1700480741
1700480742 图33-9中定义了一个抽象明星AbsStar,然后产生出各个具体类型的明星,比如电影明星FilmStar、歌星Singer,当然还可以继续扩展下去。这里还定义了一个抽象的行为AbsAction,描述明星所具有的活动,比如演电影、唱歌等,在这种设计下,明星可以扩展,明星的活动也可以扩展,非常灵活。我们先来看明星的活动,抽象活动如代码清单33-45所示。
1700480743
1700480744 代码清单33-45 抽象活动
1700480745
1700480746 public abstract class AbsAction{
1700480747
1700480748 //每个活动都有描述
1700480749
1700480750 public abstract void desc();
1700480751
[ 上一页 ]  [ :1.700480702e+09 ]  [ 下一页 ]