飞行的猪哼哼

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
两种设计模式:

1.工厂模式:
解释:实现创建者和调用者的分离。
用于:复杂的对象的管理
代码:
#测试工厂模式
class CarFactory:
    def creat_car(self,brand):
        if brand == "奔驰":
            return Benz()
        elif brand == "宝马":
            return BMW()
        elif brand == "比亚迪":
            return BYD()
        else:
            return "未知品牌,无法创建!"

class Benz:
    pass
class BMW:
    pass
class BYD:
    pass
factory = CarFactory()
c1 = factory.creat_car("奔驰")
c2 = factory.creat_car("比亚迪")
print(c1)
print(c2)

运行结果:

<__main__.Benz object at 0x00F8FB70>
<__main__.BYD object at 0x02B5EAF0>

2.单例模式:
确保一个类只有一个实例对象,而且提供一个访问该实例的全局访问点。
代码:
#测试单例模式

#测试单例模式

class MySingleton:
    __obj = None   #用来存储对象名,保证只能有一个
    __init_flag = True  #用来判断对象的构造方法,确保构造方法也只能调用一次
    def __new__(cls,*args,**kwargs):
        if(cls.__obj)  == None: #如果变量为空
            cls.__obj = object.__new__(cls)  #利用object的new方法创建一个对象
        return cls.__obj #返回对象
    def __init__(self,name):
        if MySingleton.__init_flag:  #如果标记为True
            print("init>>>>>>>>")
            self.name = name   #构造方法进行
            MySingleton.__init_flag = False
a = MySingleton("aa")
b = MySingleton("bb")
print(a)
print(b)
c = MySingleton("cc")
print(c)

运行结果:
init>>>>>>>>
<__main__.MySingleton object at 0x00E9F030>
<__main__.MySingleton object at 0x00E9F030>
<__main__.MySingleton object at 0x00E9F030>


结果分析:
由结果分析,a b c 都是一个对象,构造方法也只运行了一次。
posted on 2019-08-02 20:26  飞行的猪哼哼  阅读(28)  评论(0)    收藏  举报