快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

Bridge模式 (打架篇)


Bridge1.隶属类型:结构模式2.使用条件:通常,当一个抽象类或接口有多个详细实现(concrete subclass),这些concrete 之间关系可能有以下两种:a.这多个详细实现之间恰好是并列的,如打架,要不徒手,要不带点家伙.两者之间并列b.实际应用上,经常有可能在这多个详细实现之间有概念上重叠.那么需要我们把抽象共同部分和行为共同部分各自独立开来,原来是预备放在一个接口里,现在需要设计两个接口,分别放置抽象和行为.(要害 :抽象共同部分与行为共同部分的独立分开.),又如上打架带家伙得看看带的是什么.什么木制的,管制的,砖制的,一大批,在加上原来的徒手的在加上打架的风格,是暴打族还是这灵巧型....打架的家族也够狠的,懵懵懂懂的搞了一大堆继续,挂矣...

3.基本思想:将抽象和行为划分开来,各自独立,但能动态的结合.

4.示例/** *  The Abstract of fight  */public abstract class Fight { protected String name; public abstract void hitOthers(); public String getName() {  return name; } protected FightImp getProps(String prop) {//factory   if(prop.equals("knife"))  {   return new FightImpKnife();  }    else if(prop.equals("brick"))  {   return new FightImpBrick();  }     else  {   return new FightImpEmpty();  } }}

/** *  The RefinedAbstraction */public class FightCrazy extends Fight{ FightImp prop; public FightCrazy(String prop,String name) {  this.prop=getProps(prop);  this.name=name; } public void hitOthers() {  System.out.println("暴打族:"+getName());        prop.useProps(); }}

/** *  The RefinedAbstraction */public class FightSmart extends Fight{ FightImp prop; public FightSmart(String prop,String name) {  this.prop=getProps(prop);  this.name=name; } public void hitOthers() {  System.out.println("身手灵敏型:"+getName());        prop.useProps(); }}

/** *  The Implementor */public interface FightImp { public abstract void useProps();}

/** *  The ConcreteImplementor */public class FightImpBrick implements FightImp{ public void useProps() {  System.out.println("国产板砖,质优价廉.若使用满足请按13xxxxxxxxx继承定购"); }}

/** *  The ConcreteImplementor */public class FightImpKnife implements FightImp{  public void useProps() {  System.out.println("厚背杀猪刀"); }}

/** *  The ConcreteImplementor */public class FightImpEmpty implements FightImp{ public void useProps() {  System.out.println("最搞境界:空手套白狼"); }}

Abstraction (Fight )— 定义抽象类的接口。— 维护一个指向Implementor类型对象的指针。. RefinedAbstraction (FightCrazy,FightSmart)— 扩充由Abstraction定义的接口。. Implementor (XXImp)— 定义实现类的接口,该接口不一定要与Abstraction的接口完全一致;事实上这两个接口可以完全不同。一般来讲, Implementor接口仅提供基本操作,而Abstraction则定义了基于这些基本操作的较高层次的操作。. ConcreteImplementor (XxxImp)— 实现Implementor接口并定义它的详细实现。



5.归纳:1.Bridge 模式的执行类如"打架"和"使用的道具"是一对一的关系, 准确创建FightImp是该模式的要害,2.抽象共同部分中一定有一个行为的interface作为其属性 并用有一方式作为它初始的入口:getProps();3.在其"抽象共同部分"详细的行为过程中添加"行为属性"的行为,每一个RefinedAbstraction中都有一个Imp做为其成员变量,聚合使用

链接:

1.设计模式(可复用面向对象软件的基础)

2.设计模式(Patterns in Java) -- http://www.jdon.com






返回类别: 教程
上一教程: 关于java 的 Classpath全解<java入门之一>
下一教程: java 文件操作大全

您可以阅读与"Bridge模式 (打架篇)"相关的教程:
· 设计模式之Facade??家庭篇
· FACTORY模式
· 利用Observer模式解决组件间通信问题
· Java源码分析:深入探讨Iterator模式
· Draw2D--1. 设计思想和相关模式
    微笑服务 优质保证 索取样品