一、设计模式
设计模式来源于建筑行业,中西方建筑各有自己的风格;每种风格都有自己的建筑方法(套 路); 只要按照不同风格的建筑方法(套路)就能建成不同风格的建筑;简单的说设计模式就是一 种(方法)套路;再比如肯德基麦当劳快餐店为什么全球的口味都一样呢?就是做食品的套路相 同(炸鸡块多长时间都是固定的)。 程序中设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方
案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。使用设计模式是为
了重用代码、让代码更容易被他人理解、保证代码可靠性。
1. 单例模式
单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某 一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象
就能派上用场。
比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来 读取配置文件的信息。如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就 是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样会严重浪费内存资源,尤其是在配置文件内容很多的情况 下。
事实上,类似 AppConfig 这样的类,我们希望在程序运行期间只存在一个实例对象。 注意:在python中导入模块就是一种单例模式。
class Sun(object):
#定义类属性
__instance= None
def __new__(cls, *args, **kwargs):
#如果__instance还没有值,就给__insstance变量赋值
if not cls.__instance:
cls.__instance=object.__new__(cls)
return cls.__instance
else:
return cls.__instance
sun=Sun()
print(id(sun))
sun1=Sun()
print(id(sun1))
结果:
1764653179736
1764653179736
2. 工厂模式
工厂模式是一个在软件开发中用来创建对象的设计模式。
当程序运行输入一个“类型”的时候,需要创建于此相应的对象。这就用到了工厂模式。在
如此情形中,实现代码基于工厂模式,可以达到可扩展,可维护的代码。当增加一个新的类
型,不在需要修改已存在的类,只增加能够产生新类型的子类。
class Car:
def run(self):
print("跨吃垮吃跑")
def stop(self):
print("巴拉巴拉的停")
class BMW(Car):
def run(self):
print("宝马----->>驾驾驾~~~")
def stop(self):
print("宝马------>>吁吁吁~~~")
class Fute(Car):
def run(self):
print("福特------>>轮胎跑")
def stop(self):
print("福特停")
class Phoenix(Car):
def run(self):
print("凤凰------>>用脚蹬")
def stop(self):
print("凤凰----->>手刹")
class CarFactory:
def new_car(self,name):
if name=="BMW":
bmw=BMW()
return bmw
if name=="Phoenix":
phoenix=Phoenix()
return phoenix
if name=="Fute":
fute=Fute()
return fute
class CarStore:
def __init__(self,factory):
self.factory=factory
def order(self,name):
new_car=self.factory.new_car(name)
return new_car
factory=CarFactory()
car_store=CarStore(factory)
fh=car_store.order("Phoenix")
fh.run()
fh.stop()
结果:
凤凰------>>用脚蹬
凤凰----->>手刹
未完待续·········