//////////2016-12-8 ~ 2016-12-9///////////
int study_data(){
享元模式(Flyweight)
簡介:
它使用共享物件,用來盡可能減少內存使用量以及分享資訊給盡可能多的相似物件;它適合用于只是因重復而導致使用無法令人接受的大量內存的大量物件。
特點:
復用我們內存中已存在的對象,降低系統(tǒng)創(chuàng)建對象實例的性能消耗。
使用場景:
1、當我們發(fā)現(xiàn)某個類型的對象有大量的實例時,我們是否可以對這些實例進行分類,經(jīng)過分類后,我們發(fā)現(xiàn)只有很少的類別的情況下。
2、我們發(fā)現(xiàn)通過使用享元模式后能夠提高系統(tǒng)的性能和不會帶來更多的復雜度時。
實現(xiàn):
使用抽象父類,在父類中定義子類具有的共同性息
將共同信息抽取后稱為公用對象,具體實現(xiàn)類引用公用對象
抽象工廠模式(Abstract Factory)
簡介:
抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供一個接口,使客戶端在不必指定產品的具體的情況下,創(chuàng)建多個產品族中的產品對象。根據(jù)里氏替換原則,任何接受父類型的地方,都應當能夠接受子類型。因此,實際上系統(tǒng)所需要的,僅僅是類型與這些抽象產品角色相同的一些實例,而不是這些抽象產品的實例。換言之,也就是這些抽象產品的具體子類的實例。工廠類負責創(chuàng)建抽象產品的具體子類的實例。
優(yōu)點:
抽象工廠模式除了具有工廠方法模式的優(yōu)點外,最主要的優(yōu)點就是可以在類的內部對產品族進行約束。所謂的產品族,一般或多或少的都存在一定的關聯(lián),抽象工廠模式就可以在類內部對產品族的關聯(lián)關系進行定義和描述,而不必專門引入一個新的類來進行管理。
缺點:
產品族的擴展將是一件十分費力的事情,假如產品族中需要增加一個新的產品,則幾乎所有的工廠類都需要進行修改。所以使用抽象工廠模式時,對產品等級結構的劃分是非常重要的。
適用場景:
當需要創(chuàng)建的對象是一系列相互關聯(lián)或相互依賴的產品族時,便可以使用抽象工廠模式。說的更明白一點,就是一個繼承體系中,如果存在著多個等級結構(即存在著多個抽象類),并且分屬各個等級結構中的實現(xiàn)類之間存在著一定的關聯(lián)或者約束,就可以使用抽象工廠模式。假如各個等級結構中的實現(xiàn)類之間不存在關聯(lián)或約束,則使用多個獨立的工廠來對產品進行創(chuàng)建,則更合適一點。
實現(xiàn):
抽象工廠父類,定義如何返回具體實例化工廠
定義抽象工廠方法
抽象工廠模式與工廠方法模式的區(qū)別
工廠方法模式針對的是一個產品等級結構;而抽象工廠模式則是針對的多個產品等級結構。在編程中,通常一個產品結構,表現(xiàn)為一個接口或者抽象類,也就是說,工廠方法模式提供的所有產品都是衍生自同一個接口或抽象類,而抽象工廠模式所提供的產品則是衍生自不同的接口或抽象類。
}