java 编程模式---桥接模式(Bridge Patter)
发布时间:2025-05-21 09:24:05 发布人:远客网络
一、java 编程模式---桥接模式(Bridge Patter)
1、就拿汽车在路上行驶来说有小汽车有公共汽车它们都不但能在市区中的公路上行驶也能在高速公路上行驶这时你会发现对于交通工具(汽车)有不同的类型然而它们所行驶的环境也在变化在软件系统中就要适应这两个方面的变化怎么才应付这种变化呢?
2、在软件系统中某些类型由于自身的逻辑它具有两个或多个维度的那么如何应对这种多维度的变化?就要利用面向对象的技术来使得类型能够沿着多个方向进行但又不引入额外的复杂度?这就要用到Bridge模式
3、将抽象部分与实现部分分离使得它们都可以独立的变化 GOF
4、 pubilc void run(){System out println(在路上);}
5、 public class SpeedWay extends Road
6、 public void run(){System out println(高速公路);}
7、 public class Street extends Road
8、 public void run(){System out println(市区街道);}
9、 public class CarOnSpeedWay extends SpeedWay
10、 public void run(){System out println(小汽车在调整公路上行驶);}
11、 public class BusOnSpeedWay extends SpeedWay
12、 public void run(){System out println(公共汽车在高速公路上行驶);}
13、 public class CarOnStreet extends Street{
14、 public void run(){System out println(汽车在街道上行驶);}
15、 public class BusOnStreet extends Street{
16、 public void run(){System out println(公共汽车在街道上行驶);}
二、win10打开网页时显示需要新应用打开此jsbridge
1、按WIN+X或右击开始菜单,然后打开旧控制面板;
3、接着再点击“安全性与维护”选项;
4、这时点击左侧的“更改Windows smartscreen筛选器设置”选项;
5、将smartscreen筛选器设置为“不执行任何操作(关闭 Windows smartscreen筛选器)“并确定保存设置;
经过上面五个步骤的设置Win10打开软件时弹出的提示窗口就不会再出现了,而且取消这个弹出窗口对系统不会有任何影响。
三、深入浅出JSBridge:从原理到使用
深入浅出JSBridge:从原理到使用
在移动端开发中,混合开发(Hybrid)模式逐渐成为主流,该模式结合了原生Native和Web H5技术,旨在汲取两者优点。随着移动设备硬件的升级和系统对Web特性支持的增强,H5的劣势被逐渐缩小。混合开发模式按照渲染分为原生渲染和Web渲染,它们之间通过JSBridge实现原生与Web的通信。
JSBridge是一种实现原生和Web双向通信的机制,以JavaScript引擎或Webview容器作为媒介,通过协定协议进行通信。在Hybrid模式下,H5需要使用Native功能,如二维码扫描、调用原生页面、获取用户信息等。同时,Native也需要向Web端发送推送、更新状态等,由于JavaScript在单独的JS Context中执行(Webview容器、JSCore等),与原生运行环境隔离,所以需要JSBridge作为媒介实现双向通信。
通过JSBridge,Web端可以调用Native端的Java接口,反之亦然,实现彼此的双向调用。
在讨论JSBridge实现原理之前,了解WebView至关重要。WebView是移动设备上用于运行JavaScript的环境,用于渲染Web页面并与页面JavaScript交互,实现混合开发。Android和iOS中的WebView有所不同,Android采用不同版本的webkit内核,而iOS则分别使用了UIWebView和WKWebView,后者性能和特性支持更强。
JSB实现原理涉及Web端和Native的通信机制,类似于Client/Server模式。具体实现分为两部分:Native->Web和Web->Native通信。
对于Native->Web通信,Android 4.4之前可通过loadUrl实现,但无法执行回调。Android 4.4之后和iOS支持evaluateJavascript来执行JS代码,并获取返回值执行回调。iOS中使用stringByEvaluatingJavaScriptFromString或evaluateJavaScript。
Web->Native通信有两种常见方式:拦截Webview请求的URL Schema和向Webview中注入JS API。URL Schema允许自定义通信格式,但存在限制和兼容性问题。另一种方式是通过将Native接口注入到JS的Context(window)对象中,实现Web端直接调用。Android使用addJavascriptInterface,iOS则利用JavaScriptCore和WKScriptMessageHandler。
带有回调的调用实现基于上述两种通信方式,通过在参数中添加callbackId标记回调,完成对端操作并返回结果。回调功能实现为两次单项通信。
为了简化实现过程,开源的JSBridge库如DSBridge-Android提供了方便使用的解决方案。相比自建实现,使用开源库能减少工作量并提升兼容性。
总结,JSBridge在Hybrid开发中扮演重要角色,实现了原生与Web端的通信。理解其原理和实现方法有助于高效地利用JSBridge,提升开发效率。在实际应用中,推荐使用现有的开源JSBridge库,以避免重复造轮子,专注于核心功能的实现。