【单例模式 】
原理:
class test(object):
__instance = None
def __new__(cls):
if cls.__instance == None:
cls.__instance = object.__new__(cls)
return cls.__instance
else:
return cls.__instance
t = test()
#通过私有属性在__new__创建里面判断为空不,为空就通过object基类创建一个对象,创建对象后就不为空了
#下次再定义对象的时候,进类执行__new__判断不为空,返回第一个创建的对象
__new__(cls):方法是进入类时第一个调用的方法,它有返回值对象是object . __new__(cls),
单例1、
##单例模式之只初始化一次对象
# class temp(object):
#
# __instance = None
# __init_flag = False
#
# def __new__(cls,name):
# if cls.__instance == None:
# cls.__instance = object.__new__(cls)
# return cls.__instance
# else:
# return cls.__instance
#
# def __init__(self,name):
# if temp.__init_flag == False:
# self.name = name
# temp.__init_flag = True
#
# a = temp("A")
# print(id(a))
# print(a.name)
【工厂模式】
#简单的工厂模式#买车
class CarStore(object):
def __init__(self):
self.type = Factory()#实列化对象,在类里面调用其他外部类
def order(self,benben):
return self.type.select_car_type(benben)#调用其他类对象里面的方法
class Factory(object):
def select_car_type(self,car_type):
if car_type == "A":
return carA() #在类里面调用其他外部类
elif car_type == "B":
return carB()
elif car_type == "C":
return carC()
class Car(object):
def move(self):
print("car move")
def stop(self):
print("car stop")
class carA(Car):
print("carA")
class carB(Car):
print("carB")
class carC(Car):
print("carC")
car_store = CarStore() #创建类对象
car = car_store.order("A") #car_store.order("A")返回的是carA() 创建对象
car.move() #carA()是Car()的子类,它拥有父类的属性
car.stop()
#通过类里面调用类外的类,传递参数信息,最后拿到的那个信息决定了要实现的功能