Java中23種設(shè)計(jì)模式.docx_第1頁(yè)
Java中23種設(shè)計(jì)模式.docx_第2頁(yè)
Java中23種設(shè)計(jì)模式.docx_第3頁(yè)
Java中23種設(shè)計(jì)模式.docx_第4頁(yè)
Java中23種設(shè)計(jì)模式.docx_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Java中23種設(shè)計(jì)模式目錄1. 設(shè)計(jì)模式 31.1 創(chuàng)建型模式 41.1.1 工廠方法 41.1.2 抽象工廠 61.1.3 建造者模式 101.1.4 單態(tài)模式 131.1.5 原型模式 151.2 結(jié)構(gòu)型模式 171.2.1 適配器模式 171.2.2 橋接模式 191.2.3 組合模式 231.2.4 裝飾模式 261.2.5 外觀模式 291.2.6 享元模式 321.2.7 代理模式 341.3 行為型模式 371.3.1 責(zé)任鏈模式 371.3.2 命令模式 401.3.3 解釋器模式 431.3.4 迭代器模式 451.3.5 中介者模式 491.3.6 備忘錄模式 521.3.7 觀察者模式 541.3.8 狀態(tài)模式 581.3.9 策略模式 611.3.10 模板方法 631.3.11 訪問(wèn)者模式 651. 設(shè)計(jì)模式(超級(jí)詳細(xì))1.1 創(chuàng)建型模式AbstractFactory ( 抽象工廠 )FactoryMethod ( 工廠方法 )Singleton ( 單態(tài)模式 )Builder ( 建造者模式 )Protot*pe * 原型模式 )1.1.1 工廠方法 *義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類。FactoryMethod使一個(gè)類的實(shí)例*延遲到其子類。 適用性 1.當(dāng)一個(gè)類不知道它所必須創(chuàng)建的對(duì)象的類的時(shí)候。 2.當(dāng)一個(gè)類希望由它的子類來(lái)指定它所創(chuàng)建的對(duì)象的時(shí)候。 3.當(dāng)*將創(chuàng)建對(duì)象的職責(zé)委托給多個(gè)幫助*類中的某一個(gè),并且*希望將哪一個(gè)幫助子類是代理者這一信息局部化的時(shí)候。 參與者 1.Product 定義工廠方法所創(chuàng)建的對(duì)象的接口。 2.ConcreteProduct 實(shí)現(xiàn)Product接口。 3.Creator 聲明工廠方法,該方法返回一個(gè)Product類型的對(duì)象* Creator也可以定義一個(gè)工廠方法的缺省實(shí)現(xiàn),它返回一個(gè)缺省的ConcreteProduct對(duì)象。 可以調(diào)用工廠方法以創(chuàng)建一個(gè)Product對(duì)象。 4.ConcreteCreator 重定義工廠方法以返回一個(gè)ConcreteProduct實(shí)例。 類圖 例子*roductpublic interface Work void doWork();ConcreteProductpublic class StudentWork implements Work public void doWork() System.out.println(學(xué)生*作業(yè)!); public class TeacherWork implements Work public void doWork() System.out.println(老師審批作業(yè)!); Creatorpublic interface IWorkFactory Work get*ork();Concre*eCreatorpu*lic class StudentWorkFactory implements IWorkFactory public Work getWork() *eturn new StudentWork(); public class TeacherWorkFactory implements IWorkFactory public Work getWork() return new TeacherWork(); Testpublic class Test public static void m*in(Strin* args) IWorkFactory studentWorkFactory = new StudentWorkFactory(); studentWorkFactory.getWork().d*Work(); IWorkFactory teacherWorkFactory * new TeacherWorkFactory(); teacherWorkFactory.g*tWork().*oWork(); result學(xué)生做作業(yè)!老師審批作業(yè)!1.1.2 抽象工廠 提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)需指定它們具體的類。 適用性 1.一個(gè)系統(tǒng)要獨(dú)立于它的*品的創(chuàng)建、組合和表示時(shí)。 2.一個(gè)系統(tǒng)要由多個(gè)產(chǎn)品系列中的一個(gè)來(lái)配置時(shí)。 3.當(dāng)你要強(qiáng)調(diào)一系列相關(guān)的產(chǎn)品對(duì)象的設(shè)計(jì)以便進(jìn)行聯(lián)合使用時(shí)* 4*當(dāng)你提供一個(gè)產(chǎn)品類庫(kù),而只想顯示它們*接口而不是實(shí)現(xiàn)時(shí)。 參與者 1.Ab*tractFactory 聲明一個(gè)創(chuàng)建抽象產(chǎn)品對(duì)象的操作接口。 2.ConcreteFactory 實(shí)現(xiàn)創(chuàng)建具體產(chǎn)品對(duì)象的操作。 *.AbstractProduct 為一類產(chǎn)品對(duì)象聲明一個(gè)接口。 4.ConcreteProdu*t 定義一個(gè)將被相應(yīng)的具體工廠創(chuàng)建的產(chǎn)品*象。 實(shí)現(xiàn)*bstractProduct接口。 5.Client 僅使用由AbstractFactory和AbstractProduc*類聲明的接口 類圖 例子*bstractFactorypublic interface IAn*malFactory ICat createCat(); IDog cre*teDog();ConcreteFactoryp*blic class BlackAnimalFactory implem*nts IAnimalFactory public ICat createCat() retur* new BlackCat(); public IDog createDog() return new BlackDog(); public class WhiteAnimalFac*ory imp*ements IAnimalFactory public ICat createCat() return new WhiteCat(); public IDog cre*teDog() return new WhiteDog(); Abstrac*Productpublic interface ICat void eat();public interface IDog void eat();Concrete*roductpublic class Black*at implements ICat public void eat() System.out.println(The bl*ck cat is eating!); public class WhiteCat implements *Cat public void eat() Sy*tem.out.prin*ln(The w*ite cat is eating!*); public class BlackDog implements IDog public void eat() System.out.println(The black dog is eating); public class WhiteDog implements IDog public void eat() System.out.println(The white dog is eat*ng!); Clientpublic static void main(String args) IAnimalFactory blackAnimalFa*tory = new BlackAnimalFactory(); ICat blackCat = blackAnimalFactory.createCat(); blackCat.eat(); IDog blackD*g = blackAnimalFactory.createDog(); blackDog.eat(); IAnimalFactory whiteAnimalF*ctory = new WhiteAnimalFactory(); ICat whiteCat = whiteAnimalFactory.createCat(); whiteCat.eat(); IDog *hiteDog = whiteAnimalFactory.createDog(); whiteDog.eat();res*ltThe bla*k cat is eating!Th* black dog is eatin*!The white cat is eating!The white dog is *ating!1.1.3 建造者模式 將一個(gè)復(fù)雜對(duì)象的構(gòu)*與它的表示分離,使*同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。 適用性 1.當(dāng)創(chuàng)建復(fù)雜對(duì)象的算法應(yīng)該獨(dú)立于該對(duì)象的組成部分以及它們的裝配方式時(shí)。 *.當(dāng)構(gòu)造過(guò)程必須允*被構(gòu)造的對(duì)象有不同*表示時(shí)。 參與者 1.Builder 為創(chuàng)建一個(gè)Product對(duì)象的各個(gè)部件指定抽象接口。 2.ConcreteBuilder 實(shí)現(xiàn)Buil*er的接口以構(gòu)造和裝配該產(chǎn)品的各個(gè)部件。 定義并明確它所創(chuàng)建的表示* 提供一個(gè)檢索產(chǎn)品的接口。 3.Director 構(gòu)造一個(gè)使用Builder接口的對(duì)象。 4.Product 表示被構(gòu)造的復(fù)雜對(duì)象。ConcreteBuilder創(chuàng)建該產(chǎn)品的內(nèi)部表示并定義它的裝配過(guò)程。 包含定義組成部件的類,包括將這些部件裝配成最終產(chǎn)品的接口。 類圖 例子Buil*erpublic interface PersonBuilder void buildHead(); v*id buildBody(); void buildFoot()* Person buildPerson();ConcreteBuilderpublic class ManBuilder implements PersonB*ilder Person person; public ManBuilder() person = ne* Man(); publ*c void build*ody() perso*.setBody(建造男人的身體); public void buildFoot() person.setFo*t(建造男人的腳); public void buildHead() pers*n.setHead(建造*人的頭); *ublic Person buildPerson() retur* person; Dir*ctorpublic class PersonDirec*or public Person constructPerson(PersonBuilder pb) pb.buildHead(); pb.buildBody(); pb.buildFoot(); return pb.buildPerson(); Productpublic class Person private String head; private String body; private String foot; public String getH*ad() return head; public void setHead(String hea*) this.head = head; public String getBody() return body; public void setBody(String body) this.b*dy = body; public String getFoot() return foot; public void setFoot(String foot) t*is.foot = foot; public class Man extends Person Testpubl*c class Test public static void main(String ar*s) PersonDirector pd = new PersonDirector(); Person person = pd.constructPerson(new ManBuilder(); System*out.println(person.getBody(); System.out.println(person.getFoot(); System.out.println(person.getHead(); result建造男人*身體建造男*的腳建造男人的頭1.1.4 單態(tài)模式 保證一個(gè)類僅有一個(gè)實(shí)例,*提供一個(gè)訪問(wèn)它的全局訪*點(diǎn)。 適用性 1.當(dāng)類只能有一個(gè)*例而且客戶可以從一個(gè)眾所周知的訪問(wèn)點(diǎn)訪問(wèn)它時(shí)。 2.當(dāng)這個(gè)唯一實(shí)例應(yīng)該是通過(guò)子類化可擴(kuò)展的,并且客戶應(yīng)該無(wú)需更改代碼就能使用一個(gè)擴(kuò)展的實(shí)例時(shí)。 參與者 Singleton 定義一個(gè)Instance操作,允許客戶訪問(wèn)它的唯一實(shí)例。Instance是一個(gè)類操作。 可能負(fù)*創(chuàng)建它自己的唯一實(shí)例。 類圖 例子Singletonpublic class Singleton private static Singleton sing; private Singleton() public st*tic Singleton get*nstance() if (sing = null) sing = new Singleto*(); return sing; Testpublic class Test public static void *ain(*tring args) Singleton sing = Singleton.getInstance(); Singleton si*g2 = Singleton.getI*stance(); System.out.println(sing); System.out.pr*ntln(sing2); resultsingleton.Singleton1c78e57singleton.Singleton1c78e571.1.5 原型模式 用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象。 適用性 1.當(dāng)一個(gè)系統(tǒng)應(yīng)該獨(dú)立于它的產(chǎn)品創(chuàng)*、構(gòu)成和表示時(shí)。 2.當(dāng)要實(shí)例化的類是在運(yùn)行時(shí)刻指定時(shí),例如,通過(guò)動(dòng)態(tài)裝載。 3.為了避免創(chuàng)建一個(gè)與產(chǎn)品類層次平行的工廠*層次時(shí)。 4.當(dāng)一個(gè)類的實(shí)例只能有幾個(gè)不同狀態(tài)組合中的一種時(shí)。 建立相應(yīng)數(shù)目的原型并克隆它們可能比每次用合適的狀態(tài)手工實(shí)例化該類更方便一些。 參與者 1. Prototype 聲明一個(gè)克隆自身的接口。 2. ConcretePrototype 實(shí)現(xiàn)一個(gè)克隆自身的操作。 3. Client 讓一個(gè)原型克*自身從而創(chuàng)建一個(gè)新的對(duì)象。 類圖 例子Prototypepublic class Prototype implements Cloneable private String name; public void setName(String name) = name; public String getName() return ; public Object clone() try return super.clone(); catch (Exception e) e.printStackTrace(); return null; ConcretePrototypepubl*c class ConcretePrototype extend* Prototype public ConcretePrototype(String name) setName(name); Clientpublic clas* Test public static void main(String args) Prototype pro = new ConcretePrototy*e(prototype); Prototype pro2 = (Prototype)pro.clone(); *ystem.out.println(pro.getName()*; System.out.println(pro2.getName(); resultprototypeprototype1.2 結(jié)構(gòu)型模式Adapter * 適配器模式 *Bridge ( 橋接模* )Composite ( 組合模式 )Decorator ( 裝*模式 )Facade ( 外觀模式 )Flyweight ( 享元模式 )Proxy ( 代理模式 )1.2.1 適配器模式 將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。Adapter模式使得原本由于接口*兼容而不能一起工作的那*類可以一起工作。 適用性 1.你想使*一個(gè)已經(jīng)存在的類,而它的接口不符合你的需求。 2.你想創(chuàng)建一個(gè)可以復(fù)用的類,該類可以與其他不相關(guān)的類或不可預(yù)見(jiàn)的類(即那*接口 可能不一定兼容的類)協(xié)同工作。 *.(僅適用于對(duì)象Adapter)你想使用一些已經(jīng)存在的子類,但是不可能對(duì)每一個(gè)都進(jìn)行 子類化以匹配它們的接口。對(duì)象適配器可以適配它的父類接口。 參與者 1.Target 定義Client使用的與特定領(lǐng)域相關(guān)的接口。 2.Client 與符合Target接口的對(duì)象協(xié)同。 3.Adapt*e 定義一個(gè)已經(jīng)存在的接口,這個(gè)接口需要適配。 4.Adapter 對(duì)Adaptee的接口與Target接口進(jìn)行適配 類圖 例子Targetpublic interface Target void adapteeMethod(); void adapterMethod();Adapteepublic class Adaptee public void adapteeMethod() Syste*.out.p*intln(Adaptee method!); Adapt*rpublic clas* Adapter implement* Target private Adap*ee adaptee; public Adapter(Adaptee adaptee) this.adapte* = adaptee; public void adapteeMethod() adaptee.adapteeMethod();public void adapterMethod() *ystem.out.println(Adapter method!); Clientpublic cla*s Test public stati* void main(String args) Target target = new Adapter(new Adaptee(); tar*et.adapteeMethod(); target.adapterM*thod(); resultAdaptee method!Adapter method!1.2.2 橋接模式 將抽象部分與它*實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。 適用性 1.你不希望在抽*和它的實(shí)現(xiàn)部分之間有一個(gè)固定的綁定關(guān)系。 例如這種情況可能是因?yàn)椋诔绦蜻\(yùn)行時(shí)刻實(shí)現(xiàn)部分應(yīng)可以*選擇或者切換。 2.類的抽象以及它的實(shí)現(xiàn)都應(yīng)該可以通*生成子類的方法加以擴(kuò)充。 這時(shí)Bridge模式使你可以對(duì)不同的抽象接口和實(shí)現(xiàn)部分進(jìn)行組合,并分別對(duì)它們進(jìn)行擴(kuò)充。 3.對(duì)一個(gè)抽象的實(shí)現(xiàn)部分的修改應(yīng)對(duì)客戶不產(chǎn)生影響,即客戶的代碼不必重新編譯。 4.正如在意圖一節(jié)的第一個(gè)類圖中所示的那樣,有許多類要生成。 這*一種類層次結(jié)構(gòu)說(shuō)明你必須將一個(gè)對(duì)象分解成兩個(gè)部分。 5.*想在多個(gè)對(duì)象間共享實(shí)現(xiàn)(可能使用引用計(jì)數(shù)),但同時(shí)要求客戶并不知*這一點(diǎn)。 參與者 1.Abstraction 定義抽象類的接口。 維護(hù)一個(gè)指向Implementor類型對(duì)象的指針。 2.RefinedAbstraction 擴(kuò)充由Abstraction定義的接口。 3.Implementor 定義實(shí)現(xiàn)類的接口,該接口不一定要與Ab*traction的接口完全一致。 事實(shí)上這兩個(gè)接口可以完全不同。 *般來(lái)講,Implementor接口僅提供基本操作,而Abstraction則定義了基于這些基本操作的較高層次的操作。 4.ConcreteImplementor *現(xiàn)Implementor接口并定義它的具體實(shí)現(xiàn)。 類圖 例子Abstr*ctionpublic abstract class Person private Clothing clothing; pr*vate String type; public Clothing getClothing() return clothing; publi* void setClothing() this.clothing = *lothingFactory.getClothing(); public void setType(String type) t*is.type = type; public String getType() return this.ty*e; public abstract void dress();RefinedAbstractionpublic class Man extends *erson public Man() setType(男人); public void dress() Clothing clothing = get*lothing(); clothing.personDressCloth(this); public class Lady extends Person public Lady() setTyp*(女人); public void dress() Cloth*ng clothing = getClothing(); c*othing.personDressCloth(this); Implemento*public abstract class Clothing public abstract void personDressC*oth(*erson person);ConcreteImplemento*public class *ack*t extends Clothing public void personDressCloth(Person person) System.out.println(person.getType() + 穿馬甲); public cl*ss Trouser extends Clothing public void personDressCloth(Person person) System.ou*.println(*erson.getType() + 穿褲子); Testpublic class Te*t public s*atic void main(String args) Person man = new Man(); Person lady = new Lady(); Clothing jacket = new Ja*ket(); Clot*ing trouser = new Trouser(); jacket.personDressCloth(man); trouser.personDressCloth(man); j*cket.personDressCloth(lady); trouser.personDressCloth(lady); result男人穿馬甲男人穿褲子女人穿馬甲女人穿褲子1.2.3 組合模式 將對(duì)象組合成樹(shù)形結(jié)構(gòu)以表示部分-整體的層次結(jié)構(gòu)。Composite使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)*的使用具有一致性。 適用性 1.你想表示對(duì)象的部分-整*層次結(jié)構(gòu)。 2.你希望用戶忽略組合對(duì)象與單個(gè)對(duì)象的不同,用戶將統(tǒng)一地使用組合結(jié)構(gòu)中的所有對(duì)象。 參與者 1.Component 為組合中的對(duì)象聲明接口。 在適當(dāng)?shù)那闆r下,實(shí)現(xiàn)所有類共有接口的缺省行為。 聲明一個(gè)接口用于訪問(wèn)和管理Component的子組件。 (可選)在遞歸結(jié)構(gòu)中定義一個(gè)接口,用于訪問(wèn)一個(gè)父部件,并在合*的情況下實(shí)現(xiàn)它。 2.Leaf 在組合中表示葉節(jié)點(diǎn)對(duì)象,葉節(jié)點(diǎn)沒(méi)有子節(jié)點(diǎn)。 在組合中定義節(jié)點(diǎn)對(duì)象的行為。 3.Compos*te 定義有子部件的*些部件的行為。 存儲(chǔ)子部件。 在Component接口中實(shí)現(xiàn)與子部件有*的操作。 4.Client 通過(guò)Component接*操縱組合部件的對(duì)象。 類圖 例子Componentp*blic abstract class Employer private String name; public void setName(String name) = *ame; public String getName() return ; public abstract void add(Employer employer*; public abstract void delete(Employer employer); public List employers; public void printInfo*) System.out.println(name); *ublic List getE*ployers() return this.employers; Leafpublic class Programmer extends Employer public Programmer(String name) setNam*(name); employers = null;/程序員, 表示沒(méi)有下屬了 public v*id add(Employer employer) public void delete(Employer employer) public class Pro*ectAssistant extends Employer public ProjectAss*stant(String name) setName(name); employers = *ull;/項(xiàng)目助理, 表示沒(méi)有下屬了 public void add(Employer employer) public void delet*(Employer employer) Compositepublic class Project*anager extends E*ployer public ProjectManager(String name) setName(name); employers = new A*rayList(); public void add(Employer employer) employers.add(employer); public void delete(Emplo*er employer) employers.remove(employer); Clie*tpubl*c class Test public st*tic void main(String args) Employer pm = new ProjectManager(項(xiàng)目經(jīng)理); Emplo*er pa = new ProjectAssistant(項(xiàng)目助理); Employer progra*mer1 = new Programmer(程序員一); Employer programmer2 = new Programmer(程序員二); pm.add(pa);/為項(xiàng)目經(jīng)理添加項(xiàng)目助理 pm.add(programmer2);/*項(xiàng)目經(jīng)理*加程序員 List ems = pm.getEm*loyers(); for (Employer em : ems) System.out.println(em.getNam*(); *result項(xiàng)目助理程序員二1.2.4 裝飾模式 動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)。就增加功能來(lái)說(shuō),Decorator模*相比生成子類更為*活。 適用性 1.在不影響其他*象的情況下,以動(dòng)態(tài)、透明的方式給單個(gè)對(duì)象添加職責(zé)。 2.處理那些可以撤消的職責(zé)。 3.當(dāng)不能采用生成子類的方法進(jìn)行擴(kuò)充時(shí)。 參與者 1.Component 定義一個(gè)對(duì)象接口,可以給這些對(duì)象動(dòng)態(tài)地添加職責(zé)。 2.ConcreteComponent 定義一個(gè)對(duì)象,可以給這個(gè)對(duì)象添加一些職責(zé)。 3.Decorator 維持一個(gè)指向Component對(duì)象的指針,并定義一個(gè)與Component接口一致的接口。 4.ConcreteDecorator 向組件添加職責(zé)。 類圖 例子Componentpublic interface Person void eat();ConcreteComponent*ublic class M*n implements Person public void eat() System.out.println(男人在吃);*Decoratorpublic abstrac* class Decorator implements Perso* protected Person person* public void setPerson(Person person) this.person = person; public void eat() person.eat(); ConcreteDec*ratorpubli* class ManDecoratorA extends Decorator public void eat() super.eat(); reEat(); Sy*tem.out.println(ManDecoratorA類); public void reEat() System.out.println(再吃一頓飯); *public class ManDecoratorB extends Decorator * public void eat() super.eat(); Syst*m.out.println(=); System.out.println(ManDecoratorB類); Testpublic class Test public st*tic void main(Strin* args) Man man = new Man(); ManDecoratorA md1 = new ManDecoratorA(); ManDecoratorB md2 = n*w ManDecoratorB(); md1.setPerson(man); md2.setPerson(md1); md2.eat(); result男人在吃再吃一頓飯ManDecoratorA類=ManDecoratorB類1.2.5 外觀模式 為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,F(xiàn)acade模式定義了一個(gè)高層接口,這個(gè)接口使得這*子系統(tǒng)更加容易使用。 適用性 1.當(dāng)你要為一個(gè)*雜子系統(tǒng)提供一個(gè)簡(jiǎn)單接口時(shí)。子系統(tǒng)往往因?yàn)椴粩嘌莼兊迷絹?lái)越 復(fù)雜。大多數(shù)模式使用時(shí)都會(huì)產(chǎn)生更多更小的類。這使得子系統(tǒng)更具可重用性,也更容 易對(duì)子系統(tǒng)進(jìn)行定制,但這也給*些不需要定制子系統(tǒng)的用戶帶來(lái)一些使用上的困難。 Fa*ade可以提供一個(gè)簡(jiǎn)單的缺省視圖,這一視圖對(duì)大多數(shù)用戶來(lái)說(shuō)已經(jīng)足*,而那些需 要更多的可定制性的用戶可以越過(guò)facade層。 2.客戶程序與抽象類的實(shí)現(xiàn)部分之間存在著很大的依賴性。引入facade將這個(gè)子系統(tǒng)與客 戶以及其他的子系統(tǒng)分離,可以提高子系統(tǒng)的獨(dú)立性和可移植性。 3.當(dāng)你需要構(gòu)建一個(gè)層次結(jié)構(gòu)的子系統(tǒng)時(shí),使用facade模式定義子系統(tǒng)中每層的入口點(diǎn)。 如果子系統(tǒng)之間是相互依賴的,你可以讓它們僅通過(guò)facade進(jìn)行通訊,從而簡(jiǎn)化了它們 之間的依賴關(guān)系。 參與者 1.Facade 知道哪些子系統(tǒng)類負(fù)責(zé)處理請(qǐng)求。 將客戶的請(qǐng)求代理給適當(dāng)?shù)淖酉到y(tǒng)對(duì)象。 2.Subsystemclasses 實(shí)現(xiàn)子系統(tǒng)的功能。 處理由Facade對(duì)象指派的任務(wù)。 沒(méi)有facade的任何相關(guān)信息;即沒(méi)有指向*acade的指針。 類圖 例子F

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論