大概有7中結構模式,分為上下兩篇。
一、adapter(介面卡)
描述:將兩個不相容的類結合一起使用,一般需要用到其中某個類的若干方法
好處:在兩個類直接建立乙個混合介面,而不必修改類裡面的其他**
例子:假設我們要打樁,有兩種類:方形樁 圓形樁.
public class squarepeg
public class roundpeg
}現在有乙個應用,需要既打方形樁,又打圓形樁.那麼我們需要將這兩個沒有關係的類綜合應用.假設roundpeg我們沒有源**,或源**我們不想修改,那麼我們使用adapter來實現這個應用:
public class pegadapter extends squarepeg
二、facade(外觀)
描述:為子系統的一組介面提供乙個一致的介面
好處:將其中不變的部分提煉出來,做成乙個介面供上層使用,降低系統的複雜性,增加了靈活性
例子:新建賽車類:
package car_package;
public class car
public void check_stop()
public void check_box()
public void check_console()
新建賽車操作的外觀類:
package car_facade;
import car_package.car;
public class car_facade_imple
}新建客戶端執行類:
package run_main;
import car_facade.car_facade_imple;
import car_package.car;
public class run_main
}三、proxy(**模式)
描述:為其他物件提供一種**已控制對這個物件的訪問
好處:對於開銷很大,只有使用時才建立的情況下,可以使用**
一種型別嘛,那肯定是介面,定義個潘金蓮
public class panjinlian implements kindwoman
再定義個醜陋的王婆
public class wangpo implements kindwoman
//她可以是kindwomam的任何乙個女人的**,只要你是這一型別
public wangpo(kindwoman kindwoman)
@override
public void makeeyeswithman()
兩個女主角都上場了,該男主角了,定義個西門慶
package com.yangguangfu.proxy;
public class ximenqiang
元素節點 leaf:
public class leaf implements component
public void setname(string name)
@override
public void add(component e)
@override
public void del(component e)
@override
public component get(int i)
@override
public void operate()
}部分整體composite:
public class composite implements component
@override
public void del(component e)
@override
public component get(int i)
@override
public void operate() }}
客戶端**呼叫:
public class customer
}客戶端**可以輕鬆的呼叫組合物件的方法,不管裡面的元素的個數有多少,樹形組織結構如何,客戶端都只用相同的**便可,不用修改原有的**
設計模式 結構模式 外觀模式
外觀模式 fasade pattern 隱藏系統的複雜性 將一系列複雜的業務交給乙個外觀類來供使用者呼叫,使用者不用對具體的業務實現關注太多。最好理解的是電腦開關機的案例 computer的power on 或者power off是cpu,memory和disk的開關的總體結果,但是使用者無需知道這...
結構模式 組合模式
組合模式 composite pattern 組合多個物件形成樹形結構以表示具有 整體 部分 關係的層次結構。組合模式對單個物件 即葉子物件 和組合物件 即容 器物件 的使用具有一致性,組合模式又可以稱為 整體 部分 part whole 模式,它是一種物件結構型模式。將物件組合成樹形結構以表示部分...
設計模式之結構模式 介面卡模式
介面卡模式 adapter 介面卡模式將某個類的介面轉換成使用者期望的另乙個介面行為,目的是為了適應由於介面與介面之間不匹配所帶來的類的相容性問題。介面卡模式主要分為三大類 類的介面卡模式 物件的介面卡模式 介面的介面卡模式。首先我們來看第一種,類的介面卡模式 首先我們先建立乙個類 public c...