WEB开发网
开发学院软件开发C语言 无废话C#设计模式之十二:Bridge 阅读

无废话C#设计模式之十二:Bridge

 2009-04-02 08:23:22 来源:WEB开发网   
核心提示: 代码执行结果如下图:代码说明l PatrixScene类是抽象化角色,虽然说针对第一维度也就是游戏场景,无废话C#设计模式之十二:Bridge(2),PatrixScene也是一个抽象,但是我觉得这里说的抽象化和实现化还是针对第二维度的,因此它也就只有一个抽象角色,何时采用l 从代码角度来

代码执行结果如下图:

无废话C#设计模式之十二:Bridge 

代码说明

l         PatrixScene类是抽象化角色。虽然说针对第一维度也就是游戏场景,PatrixScene也是一个抽象,但是我觉得这里说的抽象化和实现化还是针对第二维度的,也就是游戏模式。

l         GameMode类就是实现化角色。你或许会说对于多个维度,把哪个作为抽象化角色呢?虽然维度是一个平行的概念,但是对于Bridge模式来说,我觉得它是把相对高层的角色作为抽象化角色,而把比较底层的操作作为实现化角色的。比如,对于场景和模式来说,模式是为场景服务的,我们就把场景作为抽象化角色。

l         HalfPaper和Matrix都是修正抽象化角色。按照GOF的定义是说修正父类的抽象化定义。其实,我觉得抽象化角色不一定必须是对方法有默认实现,并且由子类进行修正。

l         PropertyMode和GoldMode是具体实现化角色。它们用来实现实现化角色定义的接口。

l         从一个角度来说,抽象化和修正抽象化角色相对应实现化和具体实现化角色,从另外一个角度来说,抽象化和实现化角色对应修正抽象化和具体实现化角色。

l         客户端代码中直接选择合适的具体实现化角色。看到这里,你可能觉得和策略模式很像。其实,策略模式针对面更小一点,一是针对算法替换,二是只针对一个维度的变化点,因此它也就只有一个抽象角色。

何时采用

l         从代码角度来说,如果类型的继承是处于2个目的(违背单一职责原则)的话可以使用Bridge模式避免过多的子类。

上一页  1 2 3 4  下一页

Tags:废话 设计模式 十二

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接