物联网
您现在所在的位置:首页>企业动态>物联网

Python常用的设计模式有哪些?

编辑:学到牛牛IT培训    发布日期: 2023-12-08 11:40:00  

Python是当下非常热门的一门编程语言,其学习性以及灵活性受到很多人的喜欢,而且功能非常强大,在各个领域都有应用。下面我们一起来看下Python常用的一些设计模式,希望对你能有所帮助。


1.设计模式

设计模式是一套被广泛接受且行之有效的编程经验,它提供了一组通用的解决方案,可以应用于各种编程场景。设计模式的出现是为了解决软件开发中的一些常见问题,如代码重用、系统可扩展性、代码可读性等。


使用设计模式的好处如下:


(1)代码复用:通过使用设计模式,可以将代码分解和组合以实现代码复用。


(2)系统可扩展性:设计模式可以使系统更加灵活,易于扩展,并且能够适应不同的需求。


(3)代码可读性:使用设计模式可以提高代码的可读性,使代码更加清晰。


2.Python中的设计模式


Python中的设计模式可以分为三类:创建型模式、结构型模式和行为型模式,本文将介绍其中一些常见的模式。


(1) 工厂模式


工厂模式是一种创建型模式,它提供了创建对象的最佳方式。工厂模式将对象的创建和使用分离,使对象的创建更加灵活。


在Python中,可以使用工厂模式创建各种对象,例如:


class Dog:


    def __init__(self):


        self.name = "dog"


class Cat:


    def __init__(self):


        self.name = "cat"


class AnimalFactory:


    def create_animal(self, animal_type):


        if animal_type == "dog":


            return Dog()


        elif animal_type == "cat":


            return Cat()


        else:


            return None


factory = AnimalFactory()


animal = factory.create_animal("dog")


print(animal.name) 


# 输出:dog


(2)单例模式


单例模式是一种创建型模式,可确保一个类只有一个实例,并提供一个全局访问点。


在Python中,可以使用装饰器来实现单例模式,例如:


class Singleton:


    __instance = None


    def __new__(cls):


        if cls.__instance is None:


            cls.__instance = super().__new__(cls)


        return cls.__instance


a = Singleton()


b = Singleton()


print(a is b)


# 输出:True


(3) 适配器模式


适配器模式是一种结构型模式,它允许将一个类的接口转换成客户端所期望的另一个接口。


在Python中,可以使用适配器模式来实现不兼容接口之间的兼容性,例如:


class Target:


    def request(self):


        pass


class Adaptee:


    def specific_request(self):


        pass


class Adapter(Target):


    def __init__(self, adaptee):


        self.adaptee = adaptee



    def request(self):


        self.adaptee.specific_request()


adaptee = Adaptee()


adapter = Adapter(adaptee)


adapter.request()


(4)装饰器模式


装饰器模式是一种结构型模式,可动态地为对象附加新的行为。


在Python中,装饰器是一种特殊的函数,可以用于修改函数或类的行为,例如:


def logging(func):


    def wrapper(*args, **kwargs):


        print("call function:", func.__name__)


        return func(*args, **kwargs)


    return wrapper



@logging


def foo():


    print("hello world")


foo()


# 输出:调用函数:foo hello world


(5)观察者模式


观察者模式是一种行为型模式,它定义了对象之间的一对多关系,当一个对象的状态发生变化时,所有依赖于它的对象都将得到通知并自动更新。


在Python中,可以使用观察者模式来实现事件驱动编程,例如:


class Subject:


    def __init__(self):


        self.observers = []


    def attach(self, observer):


        self.observers.append(observer)


    def detach(self, observer):


        self.observers.remove(observer)


    def notify(self):


        for observer in self.observers:


            observer.update(self)


class Observer:


    def update(self, subject):


        pass


class ConcreteSubject(Subject):


    def __init__(self):


        super().__init__()


        self.state = 0



    def get_state(self):


        return self.state


    def set_state(self, state):


        self.state = state


        self.notify()


class ConcreteObserver(Observer):


    def update(self, subject):


        print("state changed to:", subject.get_state())


subject = ConcreteSubject()


observer = ConcreteObserver()


subject.attach(observer)


subject.set_state(1)



# 输出:状态变更为:1


综上所述,Python中的设计模式包括工厂模式、单例模式、适配器模式、装饰器模式、观察者模式等。这些模式可以应用于各种编程场景,帮助解决常见的软件开发问题。


免费试学
课程好不好,不如实地听一听

封闭学习

2

1

联系我们

电话:028-61775817

邮箱:1572396657@qq.com

地址:成都市金牛区西城国际A座8楼

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
    物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

    扫一扫,免费咨询

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
    物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

    微信公众号

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

学一流技术,找高薪工作

物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

7-24小时服务热线:

028-61775817

版权声明 网站地图

蜀ICP备2021001672号

课程问题轻松问