您当前的位置: 首页 > 

dawn

暂无认证

  • 6浏览

    0关注

    204博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

设计模式:桥接模式

dawn 发布时间:2022-06-11 23:35:19 ,浏览量:6

  GoF定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。

  它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。

  这应该是对面向接口和面对对象编程很好的解释了。比如,不管应用怎样变化,只要接口不变,那么系统就比较容易应对变化;只要基础(抽象)类定义得扎实合理,系统就可以呈现比较稳定的特征。

  PHP代码演示:

  输出:

启动A应用
启动B应用

  不管应用A和应用B怎样变化,比如升级或者其他改动,接口不会变,那么系统不受影响。

  上面是面向接口编程,面向对象编程也是体现在基础类的定义上。

  输出:

启动A应用 执行A的功能func1
启动B应用 执行B的功能func2

  其实,只要含义明确,也可以有其他编码样式的变化。

  输出:

基础类的初始化 启动A应用 A的功能
基础类的初始化 启动B应用 B的功能

  这个设计模式在很多地方都有应用,比如应用安装、事件挂载等。

  比如应用安装和使用的编码可以这样写:

  输出:

当前注册的应用列表
appA
appC

启动A应用
启动C应用

  在消息队列里的注册和使用也是一个道理,只是在事件循环上做处理。

  JavaScript代码演示:



	
		
		设计模式之桥接模式
	
	
		
function app(Name){ this.Name=Name; this.start=function(){ PrintInfo(this.Name+"启动"); } } function Bridge(){ this.App=null; this.SetCurrentApp=function(Obj){ this.App=Obj; }; this.start=function(){ this.App.start(); } } function PrintInfo(Str){ document.getElementById("demo").innerHTML = document.getElementById("demo").innerHTML + Str+""; } let AppA=new app("应用A"); let AppC=new app("应用C"); let B=new Bridge(); B.SetCurrentApp(AppA); B.start(); B.SetCurrentApp(AppC); B.start();

  输出:

应用A启动
应用C启动

  2022年6月19日第一次更新。

关注
打赏
1664252102
查看更多评论
立即登录/注册

微信扫码登录

0.0895s