首页 > 其他 > 详细

面向对象高阶-13单例模式实现

时间:2019-09-21 14:07:42      阅读:102      评论:0      收藏:0      [点我收藏+]

一丶什么是单例模式

单例是一种 设计模式 ,应用该模式的类只会生成一个实例。

设计模式?
用于解决某种固定问题的套路

MVC
MTV

二丶为什么用单例模式

单例是为了节省 资源,当一个类的所有对象属性全部相同时,则没有必要创建多个对象

三丶实例的单例

class Person():
    def __init__(self,name,age):
        self.name = name
        self.age = age


    def say_hi(self):
        print("hello im %s" % self.name)

    # 用于获取对象的方法
    @staticmethod
    def get_instance():
        #判断是否已经有了对象
        if hasattr(Person,"obj"):
            return getattr(Person,"obj")
        obj = Person("jack",18)
        Person.obj = obj
        print("new 了")
        return obj

p = Person.get_instance()
p.say_hi()


p2 = Person.get_instance()
p2.say_hi()

p3 = Person.get_instance()
p3.say_hi()

四丶单例元类

class Single(type):
    def __call__(self, *args, **kwargs):
        if hasattr(self,"obj"): #判断是否存在已经有的对象
            return getattr(self,"obj") # 有就返回

        obj = super().__call__(*args,**kwargs) # 没有则创建
        print("new 了")
        self.obj = obj # 并存入类中
        return obj


class Student(metaclass=Single):
    def __init__(self,name):
        self.name = name


class Person(metaclass=Single):
    pass

# 只会创建一个对象
Person()
Person()

面向对象高阶-13单例模式实现

原文:https://www.cnblogs.com/suren-apan/p/11561911.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!