桥接模式(Bridge)—村民打工
2015-12-17 11:53
246 查看
桥接模式:某些类型具有多个维度的变化,引入新的维度不会增加系统的复杂度,桥接模式将类的抽象与实现部分分离,实现耦合关系,从而使各个维度可以自由变化。
客户端调用类
结果如下
由上可见,桥接模式将村民类与工厂类两个维度进行了由继承关系改为了耦合关系,然后将两个维度子类化,方便灵活调用。
</pre><p>类图如下:</p><p><img src="http://img.blog.csdn.net/20151217114433420" alt="" /></p><p>在桥接模式中对每个维度进行抽象,然后再抽象类中进行耦合,通过耦合实现调用关系的灵活变化。</p><p>例:山下的村民需要打工,村里有石雕厂与养牛场</p><p></p><pre name="code" class="java">/** * 村里的村民要打工,村里有石雕厂 养牛场 * 男村民可以去石雕厂、养牛场打工 * 女村民也可以去石雕厂、养牛场打工 * 将村民与工厂的关系由继承关系改为耦合关系 * @author wang * */ public abstract class AbstractPerson { AbstractFactory factory; void work(){}; } /** * 工厂类的基类 * @author wang * */ public class AbstractFactory { void work(){}; } /** * 石雕厂 * @author wang * */ public class CarvedFactory extends AbstractFactory{ void work(){ super.work(); System.out.println("在石雕厂工作"); } } /** * 养牛场 * @author wang * */ public class CattleFactory extends AbstractFactory{ void work(){ super.work(); System.out.println("在养牛场工作"); } } /** * 男村民 * @author wang * */ public class Man extends AbstractPerson{ void work(){ super.work(); System.out.print("村里的男人"); factory.work(); } } /** * 女村民 * @author wang * */ public class Woman extends AbstractPerson{ void work(){ super.work(); System.out.print("村里的女人"); factory.work(); } }
客户端调用类
public class Client { public static void main(String args[]){ AbstractPerson man = new Man(); man.factory = new CarvedFactory(); man.work(); AbstractPerson woman = new Woman(); woman.factory = new CattleFactory(); woman.work(); }
结果如下
由上可见,桥接模式将村民类与工厂类两个维度进行了由继承关系改为了耦合关系,然后将两个维度子类化,方便灵活调用。
相关文章推荐
- [Selenium]中使用css选择器进行元素定位
- SQL 常用脚本,非常使用
- C打印二进制函数
- Spring Data MongoDB 一:入门篇(环境搭建、简单的CRUD操作)
- 工作失误总结
- ALV中的回车事件相应及添加F4帮助
- Install Skype 4.3 on Fedora 21-20-CentOS-RHEL-SL7-6.6
- iOS开发UI篇—核心动画(关键帧动画)很详细
- PHP命名空间(Namespace)的使用详解(转)
- Angular - - angular.injector、angular.module
- 常用正则表达式大全!(例如:匹配中文、匹配html)
- setTimeout()与clearTimeout()
- 学习-记录-分享
- mysql-5.7.10-winx64安装配置
- Arrays.copyof()和System.arraycopy()方法总结
- 【基于shiro的分布式权限管理系统】一个用Java、spring、mybatis和shiro开发的分布式权限管理系统
- Jquery 操作html 不常用元素方法大全
- Angular - - Angular数据类型判断
- 64位系统下编译32位的汇编程序
- ajax实现文件上传