久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Python設(shè)計模式怎么實現(xiàn)

178次閱讀
沒有評論

共計 1585 個字符,預(yù)計需要花費 4 分鐘才能閱讀完成。

Python 設(shè)計模式是通過編寫符合特定設(shè)計模式規(guī)范的代碼來實現(xiàn)的。以下是一些常見設(shè)計模式的實現(xiàn)方式:

  1. 單例模式:確保一個類只有一個實例,并提供全局訪問點。實現(xiàn)方式包括使用模塊化、使用裝飾器或者使用元類等方式。
class Singleton:
    _instance = None

    def __new__(cls):
        if not cls._instance:
            cls._instance = super(Singleton, cls).__new__(cls)
        return cls._instance

# 使用單例模式創(chuàng)建實例 
instance1 = Singleton()
instance2 = Singleton()

print(instance1 is instance2)  # True
  1. 工廠模式:定義一個創(chuàng)建對象的接口,讓子類決定實例化哪個類。實現(xiàn)方式包括簡單工廠模式、工廠方法模式和抽象工廠模式。
class Animal:
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return "Woof!"

class Cat(Animal):
    def speak(self):
        return "Meow!"

class AnimalFactory:
    def create_animal(self, animal_type):
        if animal_type == "dog":
            return Dog()
        elif animal_type == "cat":
            return Cat()

# 使用工廠模式創(chuàng)建實例 
factory = AnimalFactory()
dog = factory.create_animal("dog")
cat = factory.create_animal("cat")

print(dog.speak())  # "Woof!"
print(cat.speak())  # "Meow!"
  1. 觀察者模式:定義一個一對多的依賴關(guān)系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都會收到通知并自動更新。實現(xiàn)方式包括使用內(nèi)置的 Observable 類和 Observer 接口。
from abc import ABC, abstractmethod
from typing import List

class Observer(ABC):
    @abstractmethod
    def update(self, message: str):
        pass

class Subject:
    _observers: List[Observer] = []

    def add_observer(self, observer: Observer):
        self._observers.append(observer)

    def remove_observer(self, observer: Observer):
        self._observers.remove(observer)

    def notify_observers(self, message: str):
        for observer in self._observers:
            observer.update(message)

# 使用觀察者模式 
class ConcreteObserver(Observer):
    def update(self, message: str):
        print(f"Received message: {message}")

subject = Subject()
observer1 = ConcreteObserver()
observer2 = ConcreteObserver()

subject.add_observer(observer1)
subject.add_observer(observer2)

subject.notify_observers("Hello, world!")

以上是三種常見設(shè)計模式的實現(xiàn)方式,你可以根據(jù)需要選擇合適的設(shè)計模式來實現(xiàn)你的程序。

丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2024-05-15發(fā)表,共計1585字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 天柱县| 岳池县| 丽江市| 囊谦县| 玛纳斯县| 弥渡县| 公主岭市| 古丈县| 资阳市| 宁强县| 赣榆县| 萝北县| 丹东市| 印江| 安国市| 沿河| 兴安县| 方城县| 将乐县| 清徐县| 滨海县| 成安县| 安西县| 阆中市| 霞浦县| 师宗县| 南通市| 白玉县| 庆元县| 井陉县| 新泰市| 玛曲县| 基隆市| 图们市| 东兴市| 来宾市| 东阿县| 卢氏县| 仁化县| 牟定县| 普兰县|