日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

桥梁模式

發布時間:2024/4/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 桥梁模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

橋梁模式:其實就是把抽象和實現解耦,解決了繼承的缺點,實現可以不用受抽象的約束,不用再綁定在一個固定的抽象層次上。

公司產品橋梁模式案例

? ?如果使用普通的繼承,那動態具有好多種公司,房地產、服裝公司、餐飲公司,然而房地產公司又可以分為 公寓房公司、別墅房公司等等...這樣的話,子類就太多啦,擴展也不是很方便。

? 如果使用橋梁模式,把公司和產品解耦,每種類型的公司可以與任意的產品組合。且產品不用受公司抽象類的約束,擴展方便

具體的代碼如下:

Product.java? 實現角色代碼如下

?

package com.designModel.Bridgemodel;/*** 實現角色 的抽象類*/ public abstract class Product {//生產public abstract void product();//銷售public abstract void sell(); }

?

Copr.java 抽象角色

package com.designModel.Bridgemodel;/*** 抽象角色*/ public abstract class Copr {//實現角色private Product product;public Copr(Product product) {this.product = product;}//公司的目的就是賺錢public void makeMoney() {this.product.product();this.product.sell();} }

?

?

具體的抽象角色

HouseCopr.java?

package com.designModel.Bridgemodel;public class HouseCopr extends Copr {public HouseCopr(Product product) {super(product);}@Overridepublic void makeMoney() {super.makeMoney();System.out.println("房地產公司賺大錢");} }

?

?

ShanZhaiCopr.java

package com.designModel.Bridgemodel;public class ShanZhaiCopr extends Copr {public ShanZhaiCopr(Product product) {super(product);}@Overridepublic void makeMoney() {super.makeMoney();System.out.println("山寨公司賺錢");} }

?

?具體的實現角色

Clothes.java

package com.designModel.Bridgemodel;public class Clothes extends Product {@Overridepublic void product() {System.out.println("生成衣服");}@Overridepublic void sell() {System.out.println("銷售衣服");} }

?

?

?Ipod.java

package com.designModel.Bridgemodel;public class Ipod extends Product {@Overridepublic void product() {System.out.println("生產Ipod產品");}@Overridepublic void sell() {System.out.println("銷售Ipod產品");} }

?

?

Client.java調用類

package com.designModel.Bridgemodel;

public class Client {

public static void main(String... args) {

HouseCopr houseCopr = new HouseCopr(new Clothes());
houseCopr.makeMoney();
System.out.println("--------------------");
ShanZhaiCopr shanZhaiCopr = new ShanZhaiCopr(new Ipod());
shanZhaiCopr.makeMoney();
System.out.println("------------------");
ShanZhaiCopr shanZhaiCopr1 = new ShanZhaiCopr(new Clothes());
shanZhaiCopr1.makeMoney();
}
}

?

橋梁模式關系類圖如下

?

Abstraction---------------抽象化角色

它的主要指責是定義出該角色的行為,同時保存一個對實現化角色的引用,該角色一般是抽象類

?

Implementor---------------實現化角色

它是接口或抽象類,定義角色必需的行為和屬性

?

RefinedAbstraction--------------修正抽象化角色

它引用實現化角色對抽象化角色進行修正

?

ConcreteImplementor---------具體實現化角色

它實現接口或抽象類定義的方法和屬性

?

Implementor.java

package com.designModel.Bridgemodel;public interface Implementor {void doSomething();void doAnything();}

?

ConcreteImplementor1.java

package com.designModel.Bridgemodel;public class ConcreteImplementor1 implements Implementor {@Overridepublic void doSomething() {}@Overridepublic void doAnything() {} }

?

Abstraction.java

?

package com.designModel.Bridgemodel;public abstract class Abstraction {private Implementor implementor;public Abstraction(Implementor _impl) {this.implementor = _impl;}public void request() {this.implementor.doSomething();}public Implementor getImp() {return implementor;} }

?

?

具體抽象化角色

package com.designModel.Bridgemodel;public class RefinedAbstraction extends Abstraction {public RefinedAbstraction(Implementor _impl) {super(_impl);}//修正父類的行為 @Overridepublic void request() {super.request();super.getImp().doAnything();} }

?

轉載于:https://www.cnblogs.com/09120912zhang/p/9324395.html

總結

以上是生活随笔為你收集整理的桥梁模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。