python常用設計模式(1)

一、設計模式

設計模式來源於建築行業,中西方建築各有自己的風格;每種風格都有自己的建築方法(套 路); 只要按照不同風格的建築方法(套路)就能建成不同風格的建築;簡單的說設計模式就是一 種(方法)套路;再比如肯德基麥當勞快餐店爲什麼全球的口味都一樣呢?就是做食品的套路相 同(炸雞塊多長時間都是固定的)。 程序中設計模式是軟件開發人員在軟件開發過程中面臨的一般問題的解決方案。這些解決方
案是衆多軟件開發人員經過相當長的一段時間的試驗和錯誤總結出來的。使用設計模式是爲
了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。

1. 單例模式

單例模式(Singleton Pattern)是一種常用的軟件設計模式,該模式的主要目的是確保某 一個類只有一個實例存在。當你希望在整個系統中,某個類只能出現一個實例時,單例對象
就能派上用場。

比如,某個服務器程序的配置信息存放在一個文件中,客戶端通過一個 AppConfig 的類來 讀取配置文件的信息。如果在程序運行期間,有很多地方都需要使用配置文件的內容,也就 是說,很多地方都需要創建 AppConfig 對象的實例,這就導致系統中存在多個 AppConfig 的實例對象,而這樣會嚴重浪費內存資源,尤其是在配置文件內容很多的情況 下。

事實上,類似 AppConfig 這樣的類,我們希望在程序運行期間只存在一個實例對象。 注意:在python中導入模塊就是一種單例模式。

class Sun(object):
    #定義類屬性
    __instance= None
    def __new__(cls, *args, **kwargs):
        #如果__instance還沒有值,就給__insstance變量賦值
        if not cls.__instance:
            cls.__instance=object.__new__(cls)
            return cls.__instance
        else:
            return cls.__instance
sun=Sun()
print(id(sun))
sun1=Sun()
print(id(sun1))

結果:

1764653179736
1764653179736

2. 工廠模式

工廠模式是一個在軟件開發中用來創建對象的設計模式。

當程序運行輸入一個“類型”的時候,需要創建於此相應的對象。這就用到了工廠模式。在
如此情形中,實現代碼基於工廠模式,可以達到可擴展,可維護的代碼。當增加一個新的類
型,不在需要修改已存在的類,只增加能夠產生新類型的子類。

class Car:
    def run(self):
        print("跨喫垮喫跑")
    def stop(self):
        print("巴拉巴拉的停")

class BMW(Car):
    def run(self):
        print("寶馬----->>駕駕駕~~~")

    def stop(self):
        print("寶馬------>>吁吁籲~~~")

class Fute(Car):
    def run(self):
        print("福特------>>輪胎跑")
    def stop(self):
        print("福特停")


class Phoenix(Car):
    def run(self):
        print("鳳凰------>>用腳蹬")
    def stop(self):
        print("鳳凰----->>手剎")


class CarFactory:
    def new_car(self,name):
        if name=="BMW":
            bmw=BMW()
            return bmw

        if name=="Phoenix":
            phoenix=Phoenix()
            return phoenix

        if name=="Fute":
            fute=Fute()
            return fute

class CarStore:
    def __init__(self,factory):
        self.factory=factory

    def order(self,name):
        new_car=self.factory.new_car(name)
        return new_car

factory=CarFactory()

car_store=CarStore(factory)

fh=car_store.order("Phoenix")
fh.run()
fh.stop()

結果:

鳳凰------>>用腳蹬
鳳凰----->>手剎

未完待續·········

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章