freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

軟件的可維護(hù)性與可復(fù)用性(存儲(chǔ)版)

  

【正文】 ,而由具體子類(lèi)給出不同操作系統(tǒng)的具體實(shí)現(xiàn),如下圖所示。實(shí)現(xiàn)的代碼如下。staticClient(unix)。windowsclient()。abstractabstract//OSFactoryreturnnewWinFactoryButtonCreateText(){}抽象產(chǎn)品B//Button}{public+WinButton客戶端通過(guò)構(gòu)造器傳入具體工廠public()。}public            // 創(chuàng)建Windows使用環(huán)境            OSFactory windows = new WinFactory()?!      ?}    }    // 具體工廠2    class WinFactory : OSFactory    {        public override Button CreateButton()        {            // 返回Windows下的Button            return new WinButton()?!          ?_text = ()。將一個(gè)復(fù)雜對(duì)象的構(gòu)建與其表示相分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。具體建造者(ConcreteBuilder)角色:擔(dān)任這個(gè)角色的是與應(yīng)用程序緊密相關(guān)的一些類(lèi),它們?cè)趹?yīng)用程序的調(diào)用下創(chuàng)建產(chǎn)品的實(shí)例。但是,導(dǎo)演者角色并沒(méi)有產(chǎn)品類(lèi)的具體知識(shí),真正擁有產(chǎn)品類(lèi)的具體知識(shí)的是具體建造者角色。請(qǐng)大家注意,這里的產(chǎn)品只是一個(gè)產(chǎn)品類(lèi),不存在繼承關(guān)系,所以也就沒(méi)有像抽象工廠中的那種客戶端依賴抽象的說(shuō)法了。System。應(yīng)用程序測(cè)試=b1Builder(b2)。()。}//}//abstract具體建造者1Product()。(PartA)。(PartB)。returnConcreteBuilder2productpartsusingVehicleBuilderbuilder(builder)。=classConstruct(VehicleBuilder{protected分部建造方法publicpublic//VehicleBuilderBuildFrame(){}public=BuildDoors(){小汽車(chē)建造者,相當(dāng)于一個(gè)具體建造者角色vehicleoverride2500=voidcc。vehicle[wheels]{private=vehicleType){索引器public{setShow(){public}}vehicleType。public構(gòu)造器string車(chē)輛類(lèi),相當(dāng)于產(chǎn)品類(lèi)。{BuildDoors()=public}{BuildFrame()VehicleBuilder//}voidvehicle[engine]Frame。void:0。override{BuildWheels()MotorCycleoverrideMotorCycleBuildervoidvoid{Vehicle車(chē)輛建造者,相當(dāng)于抽象建造者角色public經(jīng)過(guò)一個(gè)復(fù)雜的建造過(guò)程()。()。new////建造者模式應(yīng)用小例子using}{Show()Add(string產(chǎn)品類(lèi)Productvoidvoidprivate{}=:GetResult()。BuildPartA()。class{builder)Directorp2()。(b1)。DirectorMainApp模式原型代碼:Builder pattern code in C//產(chǎn)品(Product)角色:產(chǎn)品角色就是建造中的復(fù)雜對(duì)象。 模式原型UML:        private Text _text?!  ?}    // 具體工廠1    class UnixFactory : OSFactory    {        public override Button CreateButton()        {            // 返回Unix下的Button            return new UnixButton()?!          ?Client client = new Client(unix)。(_button)。=_button_text。().Name)。{b)Text//{}with+UnixButtonInteract(ButtonTextoverride返回Windows下的Buttonpublic{}{CreateText()ButtonUnixFactoryText//{等待用戶輸入=new//{所以,系統(tǒng)實(shí)際上只能消費(fèi)屬于同一個(gè)產(chǎn)品族的產(chǎn)品。UnixFactory對(duì)象負(fù)責(zé)創(chuàng)建Unix產(chǎn)品族中的產(chǎn)品,而WinFactory對(duì)象負(fù)責(zé)創(chuàng)建Windows產(chǎn)品族中的產(chǎn)品??梢园l(fā)現(xiàn)在上面的產(chǎn)品類(lèi)圖中,有兩個(gè)產(chǎn)品的等級(jí)結(jié)構(gòu),分別是Button等級(jí)結(jié)構(gòu)和Text等級(jí)結(jié)構(gòu)、同時(shí)有兩個(gè)產(chǎn)品族,也就是UNIX產(chǎn)品族和Windows產(chǎn)品族。在每一個(gè)操作系統(tǒng)中,都有一個(gè)視窗構(gòu)件組成構(gòu)件家族。什么情況下使用抽象工廠:文獻(xiàn)【GOF95】指出,在以下情況下應(yīng)當(dāng)考慮使用抽象工廠模式:、組合和表達(dá)的細(xì)節(jié),這對(duì)于所有形態(tài)的工廠模式都是重要的。voidAnimalWorld(ContinentFactoryprivate{Eat(Herbivore:{h)Carnivore//{}abstractabstract//}//Bison()。override返回牛羚public{}public創(chuàng)建食肉動(dòng)物抽象工廠AnimalWorldafricaSystem。    }    // 具體產(chǎn)品A1    class Wildebeest : Herbivore    {    }    // 具體產(chǎn)品B1    class Lion : Carnivore    {        public override void Eat(Herbivore h)        {            // 吃掉牛羚            (().Name +              eats + ().Name)?!          ?// 等待用戶輸入            ()。雖然創(chuàng)建動(dòng)物的大陸工廠是不同的,但是動(dòng)物之間的相互關(guān)系保持不變。(AbstractProductA)。=AbstractProductBAbstractProductB。//}具體產(chǎn)品B2classvoidProductB1classnewpublic}AbstractProductAConcreteFactory2ProductB1()。override{CreateProductA():CreateProductB()。等候用戶輸入AbstractFactoryClient(factory1)。void{        private AbstractProductB AbstractProductB?!  ?}    // 具體工廠1    class ConcreteFactory1 : AbstractFactory    {        public override AbstractProductA CreateProductA()        {            return new ProductA1()?!          ?Client c1 = new Client(factory1)。客戶端(Client)角色:使用抽象工廠和抽象產(chǎn)品的類(lèi)。抽象工廠(AbstractFactory )角色:聲明一個(gè)操作集合的接口以創(chuàng)建抽象產(chǎn)品族。模式原型UML:感興趣的園友可以找找相關(guān)資料。最后我會(huì)對(duì)抽象工廠模式進(jìn)行一個(gè)小結(jié)。要盡量使用組合/聚合,盡量不要使用繼承。換言之,從一個(gè)客戶類(lèi)的角度講:一個(gè)類(lèi)對(duì)另一個(gè)類(lèi)的依賴性應(yīng)當(dāng)是建立在最小的接口上的。里氏替代原則(Liskov Substitution Principle,或者LSP);如果對(duì)于每一個(gè)類(lèi)型為T(mén)1的對(duì)象o1,都有類(lèi)型為T(mén)2的對(duì)象o2,使得以T1定義的所有程序P在所有的對(duì)象o1都代換成o2時(shí),程序P的行為沒(méi)有變化,那么類(lèi)型T2是類(lèi)型T1的子類(lèi)型。換言之,應(yīng)當(dāng)可以在不必修改源代碼的情況下改變這個(gè)模塊的行為。數(shù)據(jù)的抽象化和繼承關(guān)系使得概念和定義可以復(fù)用;多態(tài)性使得實(shí)現(xiàn)和應(yīng)用得到復(fù)用;而抽象化和封裝可以保持和促進(jìn)系統(tǒng)的可維護(hù)性,復(fù)用的重點(diǎn)轉(zhuǎn)移到含有宏觀商業(yè)邏輯的抽象層次上。第一種方法對(duì)系統(tǒng)的未來(lái)有利,第二種辦法是權(quán)宜之計(jì),可以解決短期的問(wèn)題,但是會(huì)犧牲中長(zhǎng)期的利益。一個(gè)好的軟件設(shè)計(jì),必須能夠允許新的設(shè)計(jì)要求以比較容易和平穩(wěn)的方式加入到已有的系統(tǒng)中去,從而使這個(gè)系統(tǒng)能夠不斷的的煥發(fā)出活力。架構(gòu)(Architecture)是一系列相關(guān)的抽象模式,用于指導(dǎo)大型軟件系統(tǒng)各個(gè)方面的設(shè)計(jì)。其實(shí)就是解決某一類(lèi)問(wèn)題的方法論。通過(guò)這種方式,你可以無(wú)數(shù)次地使用那些已有的解決方案,無(wú)需再重復(fù)相同的工作。設(shè)計(jì)模式(Design pattern)是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類(lèi)編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。簡(jiǎn)單說(shuō)就是使用別人搭好的舞臺(tái),你來(lái)做表演。架構(gòu):各個(gè)組件之間的連接則明確和相對(duì)細(xì)致地描述組件之間的通訊。一些剛?cè)腴T(mén)的程序員經(jīng)常會(huì)混淆“框架”和“架構(gòu)”這兩個(gè)名詞,這里做了一下解釋。但是實(shí)際上,可維護(hù)性和可復(fù)用性是兩個(gè)獨(dú)立的目標(biāo),就像兩只奔跑的兔子一樣,并不總是方向一致的。過(guò)于脆弱:與軟件的過(guò)于僵硬同時(shí)存在,是軟件系統(tǒng)在修改已有代碼時(shí)過(guò)于脆弱。這就是系統(tǒng)“過(guò)于僵硬”的屬性的方面。同一種可變性的不同表象意昧著同一個(gè)繼承等級(jí)結(jié)構(gòu)中的具體子類(lèi)。依賴倒轉(zhuǎn)原則(Dependency Inversion Principle,或者DIP);要依賴于抽象,不要依賴于具體。這樣做的結(jié)果使一個(gè)軟件系統(tǒng)在功能擴(kuò)展過(guò)程當(dāng)中,不會(huì)將修改的壓力傳遞到其他對(duì)象。這樣做的結(jié)果是當(dāng)系統(tǒng)的功能需要擴(kuò)展時(shí),會(huì)相對(duì)更容易地做到對(duì)修改的關(guān)閉。要想開(kāi)發(fā)出一個(gè)具有可維護(hù)性和可復(fù)用性的軟件系統(tǒng),那是需要優(yōu)秀的設(shè)計(jì)和長(zhǎng)時(shí)間的運(yùn)行才能完成的,其實(shí)我們可以觀察一下,任何一個(gè)優(yōu)秀的軟件產(chǎn)品都是經(jīng)過(guò)長(zhǎng)時(shí)間的設(shè)計(jì),運(yùn)行,維護(hù),修改等最后才成為成功的產(chǎn)品,版本上也在不斷的更新。工廠模式專(zhuān)門(mén)負(fù)責(zé)將大量有共同接口的類(lèi)實(shí)例化。抽象工廠(Abstract Factory)模式:又稱工具箱(Kit或Toolkit)模式。抽象工廠涉及到以下角色:            Client c2 = new Client(factory2)。        }        public override AbstractProductB CreatePr
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1