桥接模式
《大话设计模式》阅读笔记和总结。原书是C#编写的,本人用Java实现了一遍,包括每种设计模式的UML图实现和示例代码实现。
目录:设计模式
Github地址:DesignPattern
说明
定义:桥接模式(Bridge),将抽象部分与它的实现部分分离,使它们都可以独立地变化。
UML图:
代码实现:
Implementor类
abstract class Implementor{ public abstract void Operation(); }
ConcreteImplementorA和ConcreteImplementorB等派生类
class ConcreteImplementorA extends Implementor{ @Override public void Operation() { System.out.println("具体实现A的方法执行"); } } class ConcreteImplementorB extends Implementor{ @Override public void Operation() { System.out.println("具体实现B的方法执行"); } }
Abstraction类
class Abstraction{ protected Implementor implementor; public void setImplementor(Implementor implementor) { this.implementor = implementor; } public void Operation(){ implementor.Operation(); } }
RefinedAbstraction类
class RefinedAbstraction extends Abstraction{ @Override public void Operation() { implementor.Operation(); } }
客户端代码
public class BridgePattern { public static void main(String[] args){ Abstraction ab = new RefinedAbstraction(); ab.setImplementor(new ConcreteImplementorA()); ab.Operation(); ab.setImplementor(new ConcreteImplementorB()); ab.Operation(); } }
运行结果
具体实现A的方法执行 具体实现B的方法执行
示例
例子:我们原来用的手机都是分为不同的品牌,每种手机里面都内置了很多小游戏,同时也有很多软件,但是不同手机之间的游戏是不能互相移植的。用程序模拟这个情景。
UML图:
代码实现:
手机品牌类
public abstract class HandsetBrand { protected HandsetSoft soft; public void setSoft(HandsetSoft soft) { this.soft = soft; } //运行 public abstract void Run(); }
手机品牌M
public class HandsetBrandM extends HandsetBrand { @Override public void Run() { soft.Run(); } }
手机品牌N
public class HandsetBrandN extends HandsetBrand { @Override public void Run() { soft.Run(); } }
手机软件
public abstract class HandsetSoft { public abstract void Run(); }
游戏、通讯录等具体类
手机游戏
public class HandsetGame extends HandsetSoft { @Override public void Run() { System.out.println("运行手机游戏"); } }
手机通讯录
public class HandsetAddressList extends HandsetSoft { @Override public void Run() { System.out.println("运行手机通讯录"); } }
客户端代码
public class Main { public static void main(String[] args){ HandsetBrand ab; ab = new HandsetBrandN(); ab.setSoft(new HandsetGame()); ab.Run(); ab.setSoft(new HandsetAddressList()); ab.Run(); ab = new HandsetBrandM(); ab.setSoft(new HandsetGame()); ab.Run(); ab.setSoft(new HandsetAddressList()); ab.Run(); } }
运行结果
运行手机游戏 运行手机通讯录 运行手机游戏 运行手机通讯录

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
外观模式
《大话设计模式》阅读笔记和总结。原书是C#编写的,本人用Java实现了一遍,包括每种设计模式的UML图实现和示例代码实现。 目录:设计模式 Github地址:DesignPattern 说明 定义:外观模式(Facade),为系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 UML图: 外观模式UML图.png 代码实现: 四个子系统的类 class SubSystemOne{ public void MethodOne(){ System.out.println("子系统方法一"); } } class SubSystemTwo{ public void MethodTwo(){ System.out.println("子系统方法二"); } } class SubSystemThree{ public void MethodThree(){ System.out.println("子系统方法三"); } } class SubSystemFour{ public void MethodFour(){ System.out.print...
- 下一篇
设计模式
《大话设计模式》阅读笔记和总结。原书是C#编写的,本人用Java实现了一遍,包括每种设计模式的UML图实现和示例代码实现。 Github地址:DesignPattern 简书文集:设计模式 这是一篇讲述如何更好的设计程序的方法集,代表了最佳的实践。 设计模式的类型 总共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns) 序号 模式&描述 设计模式 1 创建型模式<br /> 工厂模式(Factory Pattern)<br />抽象工厂模式(Abstract Factory Pattern) <br />单例模式(Singleton Pattern) <br />建造者模式(Builder Pattern) <br />原型模式(Prototype Pattern) 2 结构型模式<br /> 适配器模式(Adapter Pattern)<br /...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS8编译安装MySQL8.0.19