桥接模式
《大话设计模式》阅读笔记和总结。原书是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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2全家桶,快速入门学习开发网站教程
- MySQL数据库在高并发下的优化方案
- Red5直播服务器,属于Java语言的直播服务器