设计模式笔记之七 (桥接模式)
橋接模式
橋接模式就是把影響事物對象的多個因素抽象出來從而使兩者解偶,那么就能動態的加載變化的因素。
好吧,這個定義很抽象,我們還是來聊下具體的事物。
最近我們實驗室因為一系列的設計模式改進,所以競爭力和盈利都有了長足的發展,所以老總們就計劃著沖出亞洲,走向全球了。但是我們以前生產的男人女人都是黑發黃膚的東方系列產品,現在要打入歐美市場,我們就必須要生產金發白膚的西方系列產品,所以我們就定制了各自的產品模板:
class Ren { }class NanRen extends Ren {public String gender = "男";public String hair = "";public String skin = ""; }class NvRen extends Ren {public String gender = "女"; }class DongFangNanRen extends NanRen {public String hair = "黑色";public String skin = "黃膚";public void build() {System.out.println("性別:" + gender + ", 特征:" + hair + ", " + skin);} } class XiFangNanRen extends NanRen {public String hair = "金色";public String skin = "白膚";public void build() {System.out.println("性別:" + gender + ", 特征:" + hair + ", " + skin);} } class DongFangNvRen extends NvRen {public String hair = "黑色";public String skin = "黃膚";public void build() {System.out.println("性別:" + gender + ", 特征:" + hair + ", " + skin);} } class XiFangNvRen extends NvRen {public String hair = "金色";public String skin = "白膚";public void build() {System.out.println("性別:" + gender + ", 特征:" + hair + ", " + skin);} }public class Bridge {public static void main(String[] args) {new XiFangNvRen().build();new DongFangNvRen().build();new XiFangNanRen().build();new DongFangNanRen().build();} }這時人妖工廠的廠長說人妖也要打入歐美市場,正常人工廠的廠長說我們不僅僅要打入歐美市場,還得打入非洲和印度市場。
我們的模具制造哥一聽立馬暈倒,倒地前大吼一句,要3X4個模具讓哥加班加死吧。
就在這時,我們的資深顧問提出了一種解決方案來解救模具制造哥:
既然我們的"人"產品需要一些頭發和皮膚的"特征",而頭發和皮膚的特征會不時的改變,我們何不將"人"和"特征"分離開來,"人"只需要知道自己要有一些"特征",至于"特征"是什么樣的,到用戶使用的時候用戶給"人"賦予自己所需要的"特征"就行。
class Ren {TeZhen tz;public void setTeZhen(TeZhen tz) {this.tz = tz;} }class NanRen extends Ren {public String gender = "男";public void build() {System.out.println("性別:" + gender + ", 特征:" + tz.getHair() + ", " + tz.getSkin());} }class NvRen extends Ren {public String gender = "女";public void build() {System.out.println("性別:" + gender + ", 特征:" + tz.getHair() + ", " + tz.getSkin());} }interface TeZhen {public abstract String getHair();public abstract String getSkin(); }class DongFangTeZhen implements TeZhen {@Overridepublic String getHair() {return "黑色";}@Overridepublic String getSkin() {return "黃膚";}}class XiFangTeZhen implements TeZhen {@Overridepublic String getHair() {return "金色";}@Overridepublic String getSkin() {return "白膚";}}public class Bridge {public static void main(String[] args) {NvRen nvren = new NvRen(); //創建一個女人 TeZhen df = new DongFangTeZhen();// 生產一個東方特征nvren.setTeZhen(df); // 將東方特征賦予一個女人nvren.build(); // 這就是我們需要的東方女人 TeZhen xf = new XiFangTeZhen();nvren.setTeZhen(xf);//我們還可以給同一個人換上西方特征來滿足我們一些特殊的需求 nvren.build();} }這樣設計就解決了我們模具制造哥的問題,不過也讓我們的模具制造哥失業了,因為進入非洲及印度市場的時候,我們只需要加上兩種特征就行了。
class FezhouTeZhen implements TeZhen {@Overridepublic String getHair() {return "黑色";}@Overridepublic String getSkin() {return "黑膚";}}class YingDuTeZhen implements TeZhen {@Overridepublic String getHair() {return "黑色";}@Overridepublic String getSkin() {return "棕膚";}}現在全球都是我們的市場,并且很多人買了一個"人"和多個"特征"來滿足不同時間段的需要。
?
轉載于:https://www.cnblogs.com/biglaojiang/archive/2013/05/15/3079742.html
總結
以上是生活随笔為你收集整理的设计模式笔记之七 (桥接模式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 晒晒项目总结
- 下一篇: asp.net ajax控件工具集 Au