专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 设计模式

桥梁设计形式(柄体设计模式)

发布时间:2011-06-19 13:17:51 文章来源:www.iduyao.cn 采编人员:星星草
桥梁设计模式(柄体设计模式)

桥梁设计是将抽象化和实现化分离。抽象化就是指模型的抽象化,是实现化是行为的实现化。这个是模式讲模型和行为进行分离。然后让各自的两个等级结构各自独立的变化。然后行为的等级结构组合到模型的等级结构中。可以任意组合。实现多项功能。

角色如下:

 抽象化角色:实际上是对实体领域对象的抽象,不包含这个实体的行为实体。但是具体子类会保存实现化角色的引用。

修正抽象化角色:这个实际上抽象化角色的子类。但是会和实现化角色组合一起产生新的新的行为。

实现化角色:对领域对象变化的行为的封装。把行为进行抽象化。

具体实现化角色:实现化角色的子类。

实际上桥梁模式对领域对象和行为进行分离的典型应用模式。领域实体对象和行为两个等级各自变化。然后组合他们产生不同行为。

也是开闭原则和聚合/组合使用原则典型应用的模式。

 

如何使用:

以人为例。分别以男人穿皮靴走路。女人穿高靴子走路。还有打赤脚走路。还有的是开车的。

那么男人是否可以穿高跟靴子走路。为了动态组合,是可以的。分别以人作为一个等级结构。以XX方式走路作为行为的一个等级结构。然后动态组合他们产生不同行为

男人穿皮靴走。穿高靴子走路(也可以)

女人穿皮靴走路。穿高跟靴子走路如下:

//抽象实体对象角色:人

public interface Person{

   //人的行为抽象方法。

   public void operation();

}

 

//男人改有什么样子行为

public class  ManPerson implements Person{

 //走路行为的接口的引用 

 private Walk walk;

  public  ManPerson(Walk walk){

      this.walk=walk; 

 }

//行为操作

public void operation(){

  sex();

  walk.manner();

 }

 

//性别 男人

private void sex(){

   System.out.println("我是男人");

 }

}

 

//女人实体领域对象。引用行为走路接口

public class WomanPerson implements Person{

  //走路

  private Walk walk;

  public WomanPerson(Walk walk){

     this.walk =walk;

 }

   //人的行为 委托给行为的类去执行

    public void operation(){

         sex();

        walk.manner();

    }

 

    private void sex(){

       System.out.println("我是女人!")

    }

}

//行为类 走路

public interface Walk{

  //走路方式的行为

  public void manner();

}

 

//高跟靴走路的行为

public class HighHeelBootsWalk implements Walk{

  //穿高跟靴走路的方式

  public void manner(){

      System.out.println("我是穿高跟靴走路的!");

 }

}

 

//皮靴的走路类

public  class LeatherBootsWalk implements Walk{

  //我要穿皮靴的走路方式

 public void manner(){

   System.out.println("我要穿皮靴进行走路!");

 }

}

 

客户端调用

public class client{

    public static void main(String[] args){

       //高跟靴走路

      Walk highWalk = new HighHeelBootsWalk ();

       Walk leatherWalk = new LeatherBootsWalk ();

       //男人高跟靴子组合

       Person manPerson = new ManPerson(leatherWalk );

       Person womenPerson = new WomanPerson(highWalk);

       manPerson.operation();

      womenPerson.operation();

   }

 }

 

//一打印结果

我是男人!

我要穿皮靴进行走路!;

我是女人!

我是穿高跟靴走路的!

还可以男人穿高靴子走路 女人穿皮靴走路多钟组合方式。比较灵活。如果新增增其他的组合行为。只需要添加行为对象子类的行为类就可以了。

符合开闭原则。

应用场景:

1.如果需要实体领域对对象和行为对象更加灵活的组合方式时,避免两个层次建立静态的关系。

2,行为对象的增加不影响客户端的代码修改

3,一个构件多余一个实体领域对象和行为对象,且需要他们动态组合时。

4,尽量使用组合

本模式的核心是实体对象对象和行为对象的分离。切实体对象和行为对象有多个组合时才比较适合使用柄体模式

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • 关于后台服务器架构有关问题

    关于后台服务器架构问题 最近小弟在优化后台服务器的工作,因为以前的服务器是采用单进程,单线程,并没有涉及到多台服务器的交互问题...

  • 请问个模式的应用

    请教个模式的应用 要做个公司的权限管理,有三个角色 公司管理员,具有权限M1(a),M1(a,b) 部门经理,具有权限M1(a,b),M2() 部门管理...

  • 继承的优缺点解决方法

    继承的优缺点 请问大家如何理解继承,如何使用好继承? ------解决方案-------------------- 关于这个问题,我的确做了一些思考,推荐...

  • 急设计程序删除文件夹中的已损坏pdf文件解决办法

    急!急!急!设计程序删除文件夹中的已损坏pdf文件 文件夹中总共的pdf文件数量有三十几万,怎么才能删除这些pdf文件中已损坏的pdf文件呢? ...

  • 关于Singleton模式继承的有关问题

    关于Singleton模式继承的问题? 定义一个Singleton类,一般都是要被其他实际的类继承,使这个实际的类具有Singleton功能。 现在看到二...

  • 怎么分析需求以决定用什么设计模式

    如何分析需求以决定用什么设计模式? 最近在看设计模式解析,基本上是陷到里面无法自拔了,我的问题是如何分析需求以决定用什么设计模...

  • 设计模式的应用解决方案

    设计模式的应用 我不知道什么时候该用什么样的设计模式 有号得例子或者教学视频吗 ------解决方案-------------------- 这个...

  • visio2002创建UML类图解决思路

    visio2002创建UML类图 使用visio2002画UML类图,文件-新建-选择绘图类型-UML模型图,就会报下面的错误 Runtime Error Program c:\.....

  • 蜂窝模式?该怎么解决

    蜂窝模式? 啥意思啊 ------解决方案-------------------- 是设计模式中的一个 161592169@qq.com 你给我发歌邮件 我回...

  • [HoWo03]是什么书,在google和百度上都找不到,该怎么解决

    [HoWo03]是什么书,在google和百度上都找不到 [HoWo03]是什么书,在google和百度上都找不到 ------解决方案-------------------- H...

热门推荐: