资讯专栏INFORMATION COLUMN

Python设计模式

khs1994 / 1380人阅读

摘要:简单工厂模式工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品在工厂中加工产品,使用产品的人,不用在乎产品是如何生产出来的。单例模式的单例模式,所谓单例模式就是一个类只能创建一个实例化。

简单工厂模式

工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品;在工厂中加工产品,使用产品的人,不用在乎产品是如何生产出来的。

从软件开发的角度来说,这样就有效的降低了模块之间的耦合。
简单工厂的作用是实例化对象,而不需要客户了解这个对象属于哪个具体的子类。

class car:
    """interface as Product"""
    def drive(self):
        pass

class BMW(car):
    """Concrete Product"""
    def __init__(self,carname):
        self.__name=carname
    def drive(self):
        print("Drive the BMW as "+self.__name)

class Benz(car):
    """Concrete Product"""
    def __init__(self,carname):
        self.__name=carname
    def drive(self):
        print("Drive the Benz as "+self.__name)

class driver:
    """Factory also called Creator"""
    def driverCar(self,name):
        if name=="BMW":
            return BMW("BMW")
        elif name=="Benz":
            return Benz("Benz")

carname=input("please input BMW Benz :")
dier=driver()
d=dier.driverCar(carname)
d.drive()
单例模式

python的单例模式,所谓单例模式就是一个类只能创建一个实例化。

哪些地方需要用到单例模式,其实想一想有很多,比如
1.Python的logger就是一个单例模式,用以日志记录
2.Windows的资源管理器是一个单例模式
3.线程池,数据库连接池等资源池一般也用单例模式
4.网站计数器

当每个实例都会占用资源,而且实例初始化会影响性能,这个时候就可以考虑使用单例模式,它给我们带来的好处是只有一个实例占用资源,并且只需初始化一次

#通过装饰器实现单例模式
def singleton(cls, *args, **kw):
    instances = {}  #类变量字典

    def _singleton():
        #判断 cls 是否 存在字典中
        if cls not in instances:
            #如果不在字典中,则添加进来
            instances[cls] = cls(*args, **kw)
            #在的话就return返回
        return instances[cls]

    return _singleton

@singleton  #b=singleton(a)()  等同于 @singleton
class a:
    def shwo(self):
        print("showshow")

a1=a() #实例化对象1
a2=a() #实例化对象2
print(a1) #如果不是单例模式创建,这个地方打印两次结果不同
print(a2)
a1.shwo()  
a2.shwo()     

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41213.html

相关文章

  • Python全栈之路系列之文件操作

    摘要:可以对文件进行查看创建等功能,可以对文件内容进行添加修改删除,且所使用到的函数在为,在同时支持和,但是在系列移除了函数。在及以后,又支持同时对多个文件的上下文进行管理,即原文链接 Python可以对文件进行查看、创建等功能,可以对文件内容进行添加、修改、删除,且所使用到的函数在Python3.5.x为open,在Python2.7.x同时支持file和open,但是在3.5.x系列移除...

    Drummor 评论0 收藏0
  • python大佬养成计划----HTML网页设计<二>

    摘要:但是语言并没有成功,究其原因,认为是其非开标识放造成的。已经成为最受欢迎的程序设计语言之一。年月,该语言作者在邮件列表上宣布将于年月日终止支持。其中很重要的一项就是的缩进规则。设计定位的设计哲学是优雅明确简单。 文本标签 换行标签 -- br 是单标签,意味着它没有结束标签。起强制换行作用 段落中的文字段落中的文字段落中的文字 水平分割线 -- hr 与br相同,也是单标签。可用来区分...

    jiekechoo 评论0 收藏0
  • Python装饰器vs装饰器模式

    摘要:希望引以为戒郑传装饰模式如果你了解,你肯定听过装饰器模式。在面向对象中,装饰模式指动态地给一个对象添加一些额外的职责。就增加一些功能来说,装饰模式比生成子类更为灵活。 漫谈 如果作为一个Python入门,不了解Python装饰器也没什么,但是如果作为一个中级Python开发人员,如果再不对python装饰器熟稔于心的话,那么可能并没有量变积累到质变。 我以前也看过很多讲python 装...

    stackvoid 评论0 收藏0
  • python入门,编程基础概念介绍(变量,条件,函数,循环)

    摘要:该系列文章入门,编程基础概念介绍变量,条件,函数,循环中的数据类型,,,,在中创建对象学一门编程语言正在变得越来越容易,只要念过高中甚至是初中小学,能熟练聊和懂得一点点软件的人,入门一门编程语言都不在话下。 该系列文章: 《python入门,编程基础概念介绍(变量,条件,函数,循环)》 《python中的数据类型(list,tuple,dict,set,None)》 《在python...

    Bryan 评论0 收藏0
  • 细数Python三十年技术演变史——萌发于小众,崛起于AI

    摘要:作者宋天龙来源科技大本营导语一切都始于年的那个圣诞节,的诞生并不算恰逢其时,它崛起充满了机遇巧合,也有其必然性。年的圣诞节,开始编写语言的编译器。年发布的标志着的框架基本确定。年月发布了系列的最后一个版本,主版本号为。 showImg(https://segmentfault.com/img/remote/1460000019862276); 作者 | 宋天龙来源 | AI科技大本营 ...

    tuniutech 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<