七、桥接模式
目的 将抽象部分与其实现部分分离使它们都可以独立地变化。核心 使用组合代替继承抽象类包含一个实现接口的引用将具体实现委托给该引用。场景 跨平台 UI 开发、数据库驱动、设备控制等。首先是手机壳接口 - 实现部分接口packagebridge;/* 定义手机壳的基本操作不同的手机壳类型将实现此接口 */publicinterfaceICellphoneShell{/** * 安装手机壳的方法 * 具体的安装逻辑由实现类完成 */voidattachShell();}然后是 iPhone6 手机壳实现类 - 具体的实现部分packagebridge;/* 实现了 ICellphoneShell 接口提供 iPhone6 手机壳的具体安装逻辑 */publicclassIPhone6ShellimplementsICellphoneShell{OverridepublicvoidattachShell(){System.out.println(安装 iPhone6 手机壳);// 这里可以添加 iPhone6 手机壳特有的安装逻辑}}接着核心来了。抽象手机类 - 抽象部分packagebridge;//通过组合功能实现抽象部分与实现部分的桥接。这个组合并不是UML中的组合关系publicabstractclassBaseCellphone{protectedICellphoneShellshell;// 桥接的关键对象组合通过持有手机壳接口的引用来组合功能// 注入手机壳实现publicBaseCellphone(ICellphoneShellshell){this.shellshell;}/* 抽象组装方法 由具体子类实现完整的手机组装流程 */publicabstractvoidassemble();}iPhone 手机类 - 扩展的抽象部分packagebridge;// 继承自 BaseCellphone实现具体的 iPhone 手机组装逻辑publicclassIPhoneextendsBaseCellphone{//将 shell手机壳对象传递给父类进行初始化,这样就将 iPhone 手机与具体的手机壳实现桥接在一起publicIPhone(ICellphoneShellshell){super(shell);}/* 实现 iPhone 手机的组装过程 组合了手机本身的组装逻辑和手机壳的安装逻辑 */Overridepublicvoidassemble(){System.out.println(组装 iPhone 手机);// 手机本身的组装逻辑shell.attachShell();// 手机壳的安装逻辑// 这里可以添加其他 iPhone 特有的组装步骤}}最后看主函数入口packagebridge;publicclassMainTest{publicstaticvoidmain(String[]args){// 使用桥接模式将 iPhone 手机与 iPhone6 手机壳进行组合// 抽象部分手机和实现部分手机壳可以独立变化BaseCellphoneiPhonenewIPhone(newIPhone6Shell());iPhone.assemble();// 执行组装过程}}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2498138.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!