电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

java設計模式之Bridge

瀏覽:71日期:2024-06-26 17:43:15

Bridge定義 :

將抽象和行為劃分開來,各自獨立,但能動態(tài)的結合.為什么使用?

通常,當一個抽象類或接口有多個具體實現(xiàn)(concrete subclass),這些concrete之間關系可能有以下兩種:

1. 這多個具體實現(xiàn)之間恰好是并列的,如前面舉例,打樁,有兩個concrete class:方形樁和圓形樁;這兩個形狀上的樁是并列的,沒有概念上的重復,那么我們只要使用繼承就可以了.2.實際應用上,常常有可能在這多個concrete class之間有概念上重疊.那么需要我們把抽象共同部分和行為共同部分各自獨立開來,原來是準備放在一個接口里,現(xiàn)在需要設計兩個接口,分別放置抽象和行為.例如,一杯咖啡為例,有中杯和大杯之分,同時還有加奶 不加奶之分. 如果用單純的繼承,這四個具體實現(xiàn)(中杯 大杯 加奶 不加奶)之間有概念重疊,因為有中杯加奶,也有中杯不加奶, 如果再在中杯這一層再實現(xiàn)兩個繼承,很顯然混亂,擴展性極差.那我們使用Bridge模式來實現(xiàn)它.如何實現(xiàn)?

以上面提到的咖啡 為例. 我們原來打算只設計一個接口(抽象類),使用Bridge模式后,我們需要將抽象和行為分開,加奶和不加奶屬于行為,我們將它們抽象成一個專門的行為接口.先看看抽象部分的接口代碼:

public abstract class Coffee{CoffeeImp coffeeImp;public void setCoffeeImp() {this.CoffeeImp = CoffeeImpSingleton.getTheCoffeImp();}public CoffeeImp getCoffeeImp() {return this.CoffeeImp;}public abstract void pourCoffee();}

其中CoffeeImp 是加不加奶的行為接口,看其代碼如下:;

public abstract class CoffeeImp{public abstract void pourCoffeeImp();}

現(xiàn)在我們有了兩個抽象類,下面我們分別對其進行繼承,實現(xiàn)concrete class://中杯public class MediumCoffee extends Coffee{public MediumCoffee() {setCoffeeImp();}public void pourCoffee(){CoffeeImp coffeeImp = this.getCoffeeImp();//我們以重復次數(shù)來說明是沖中杯還是大杯 ,重復2次是中杯for (int i = 0; i < 2; i++){coffeeImp.pourCoffeeImp();}}}//大杯public class SuperSizeCoffee extends Coffee{public SuperSizeCoffee() {setCoffeeImp();}public void pourCoffee(){CoffeeImp coffeeImp = this.getCoffeeImp();//我們以重復次數(shù)來說明是沖中杯還是大杯 ,重復5次是大杯for (int i = 0; i < 5; i++){coffeeImp.pourCoffeeImp();}}}

上面分別是中杯和大杯的具體實現(xiàn).下面再對行為CoffeeImp進行繼承:;

//加奶public class MilkCoffeeImp extends CoffeeImp{MilkCoffeeImp() {}public void pourCoffeeImp(){System.out.println("加了美味的牛奶");}}//不加奶public class FragrantCoffeeImp extends CoffeeImp{FragrantCoffeeImp() {}public void pourCoffeeImp(){System.out.println("什么也沒加,清香");}}

Bridge模式的基本框架我們已經(jīng)搭好了,別忘記定義中還有一句:動態(tài)結合,我們現(xiàn)在可以喝到至少四種咖啡:1.中杯加奶2.中杯不加奶3.大杯加奶4.大杯不加奶看看是如何動態(tài)結合的,在使用之前,我們做個準備工作,設計一個單態(tài)類(Singleton)用來hold當前的CoffeeImp:;

public class CoffeeImpSingleton{private static CoffeeImp coffeeImp;public CoffeeImpSingleton(CoffeeImp coffeeImpIn) {this.coffeeImp = coffeeImpIn;}public static CoffeeImp getTheCoffeeImp(){return coffeeImp;}}

看看中杯加奶 和大杯加奶 是怎么出來的://拿出牛奶CoffeeImpSingleton coffeeImpSingleton = new CoffeeImpSingleton(new MilkCoffeeImp());//中杯加奶MediumCoffee mediumCoffee = new MediumCoffee();mediumCoffee.pourCoffee();//大杯加奶SuperSizeCoffee superSizeCoffee = new SuperSizeCoffee();superSizeCoffee.pourCoffee();注意: Bridge模式的執(zhí)行類如CoffeeImp和Coffee是一對一的關系, 正確創(chuàng)建CoffeeImp是該模式的關鍵,Bridge模式在EJB中的應用EJB中有一個Data Access Object (DAO)模式,這是將商業(yè)邏輯和具體數(shù)據(jù)資源分開的,因為不同的數(shù)據(jù)庫有不同的數(shù)據(jù)庫操作.將操作不同數(shù)據(jù)庫的行為獨立抽象成一個行為接口DAO.如下:1.Business Object (類似Coffee)實現(xiàn)一些抽象的商業(yè)操作:如尋找一個用戶下所有的訂單涉及數(shù)據(jù)庫操作都使用DAOImplementor.2.Data Access Object (類似CoffeeImp)一些抽象的對數(shù)據(jù)庫資源操作3.DAOImplementor 如OrderDAOCS, OrderDAOOracle, OrderDAOSybase(類似MilkCoffeeImp FragrantCoffeeImp)具體的數(shù)據(jù)庫操作,如"INSERT INTO "等語句,OrderDAOOracle是Oracle OrderDAOSybase是Sybase數(shù)據(jù)庫.4.數(shù)據(jù)庫 (Cloudscape, Oracle, or Sybase database via JDBC API)

標簽: Java
相關文章:
主站蜘蛛池模板: 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 中细软知识产权_专业知识产权解决方案提供商 | 九爱图纸|机械CAD图纸下载交流中心 | 低温柔性试验仪-土工布淤堵-沥青车辙试验仪-莱博特(天津)试验机有限公司 | 河南mpp电力管_mpp电力管生产厂家_mpp电力电缆保护管价格 - 河南晨翀实业 | 浙江栓钉_焊钉_剪力钉厂家批发_杭州八建五金制造有限公司 | 杰福伦_磁致伸缩位移传感器_线性位移传感器-意大利GEFRAN杰福伦-河南赉威液压科技有限公司 | 首页 - 军军小站|张军博客| 云杂志网-学术期刊-首页| 精雕机-火花机-精雕机 cnc-高速精雕机-电火花机-广东鼎拓机械科技有限公司 | 彩信群发_群发彩信软件_视频短信营销平台-达信通 | 氢氧化钙设备_厂家-淄博工贸有限公司| 软文推广发布平台_新闻稿件自助发布_媒体邀约-澜媒宝 | 恒温槽_恒温水槽_恒温水浴槽-上海方瑞仪器有限公司 | 台湾Apex减速机_APEX行星减速机_台湾精锐减速机厂家代理【现货】-杭州摩森机电 | 不锈钢水箱厂家,不锈钢保温水箱-山东桑特供水设备 | 制氮设备_PSA制氮机_激光切割制氮机_氮气机生产厂家-苏州西斯气体设备有限公司 | 京港视通报道-质量走进大江南北-京港视通传媒[北京]有限公司 | 中矗模型-深圳中矗模型设计有限公司 | 304不锈钢无缝管_不锈钢管厂家 - 隆达钢业集团有限公司 | 双工位钻铣攻牙机-转换工作台钻攻中心-钻铣攻牙机一体机-浙江利硕自动化设备有限公司 | 耐磨陶瓷,耐磨陶瓷管道_厂家-淄博拓创陶瓷科技 | 环比机械 | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | 云南外加剂,云南速凝剂,云南外加剂代加工-普洱澜湄新材料科技有限公司 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 阿米巴企业经营-阿米巴咨询管理-阿米巴企业培训-广东键锋企业管理咨询有限公司 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 直线模组_滚珠丝杆滑台_模组滑台厂家_万里疆科技 | 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | elisa试剂盒-PCR试剂盒「上海谷研实业有限公司」 | 高柔性拖链电缆_卷筒电缆_耐磨耐折聚氨酯电缆-玖泰特种电缆 | ★济南领跃标识制作公司★济南标识制作,标牌制作,山东标识制作,济南标牌厂 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 维泰克Veertek-锂电池微短路检测_锂电池腐蚀检测_锂电池漏液检测 | Type-c防水母座|贴片母座|耳机接口|Type-c插座-深圳市步步精科技有限公司 | 谷歌关键词优化-外贸网站优化-Google SEO小语种推广-思亿欧外贸快车 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 深圳网站建设-高端企业网站开发-定制网页设计制作公司 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | 智能垃圾箱|垃圾房|垃圾分类亭|垃圾分类箱专业生产厂家定做-宿迁市传宇环保设备有限公司 |