python常用设计模式(1)

一、设计模式

设计模式来源于建筑行业,中西方建筑各有自己的风格;每种风格都有自己的建筑方法(套 路); 只要按照不同风格的建筑方法(套路)就能建成不同风格的建筑;简单的说设计模式就是一 种(方法)套路;再比如肯德基麦当劳快餐店为什么全球的口味都一样呢?就是做食品的套路相 同(炸鸡块多长时间都是固定的)。 程序中设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方
案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。使用设计模式是为
了重用代码、让代码更容易被他人理解、保证代码可靠性。

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()

结果:

凤凰------>>用脚蹬
凤凰----->>手刹

未完待续·········

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值