23种设计模式python实现(1 -创建型模式)

在这里,创建型模式包括:
1 单例模式;2 工厂方法模式;3 抽象工厂模式;4 创建者模式;5 原始设计模式。

1 单例模式 singleton

作用:单一的创建一个对象
需求场景:个人对身份证的管理
Python实现:
创建一个IdentityCard的类;

class IdentityCard:

    def __init__(self):
        self.name = '令狐冲'
        self.id = '120234023049239832'
        self.address = '北京市'

创建一个Person的类管理IdentityCard

class Person:
    identity_card = None

    # 获取个人的身份证
    def get_identity_id(self):
        if self.identity_card is None:
            self.identity_card = IdentityCard.IdentityCard()
        return self.identity_card

2 工厂方法模式 factory method

作用:通过一个方法创建不同的对象
需求与场景:想买一辆车,选择1(买小汽车);2 (买客车);3(买货车)
Python实现:
创建类 Car(小汽车)、PassengerCar(客车)和FreightCar(火车)
针对买车创建FactoryMethod类

class FactoryMethod:
    def buy_car(self, type):
        if (type.endswith('1')):
            car = Car()
        elif (type.endswith('2')):
            car = PassengerCar()
        elif (type.endswith('3')):
            car = FreightCar()
        return car

3 抽象工厂模式 abstract factory

作用:通过一个类创建多个对象。
需求场景:一个人到一个陌生的城市打工,逐渐富有以后,会买房、买车、娶媳妇。
Python实现:
创建类Car(汽车)、House(房子)和wife(媳妇)
创建AbstractFactory类来实现目标。


class AbstractFactory:
    # 买一辆小轿车
    def buy_car(self):
        car = Car()
        return car

    # 买一座房子
    def buy_house(self):
        house = House()
        return house

    # 娶一个好女孩
    def marry_wife(self):
        wife = Wife()
        return wife

4 建造者模式 builder

作用:。创建一个对象的多个部分
需求场景:例如建造房子
Python实现:
创建一个House类:

class House:

    def __init__(self):
        self.room = ''
        self.door = ''

    # 返回房间
    def get_room(self):
        return self.room

    # 返回门
    def get_door(self):
        return self.door

创建一个HouseBuilder类:

class HouseBuilder():

    def __init__(self):
        self.house = House()

    # 构建房间
    def build_room(self, room):
        self.house.room = room

    # 构建门
    def build_door(self, door):
        self.house.door = door

    def get_house(self):
        return self.house

创建一个HouseDirector类:

class HouseDirector:
    def __init__(self):
        pass

    def build_house(self):
        builder = HouseBuilder()
        builder.build_room('木头房')
        builder.build_door('三角门')
        return builder.get_house()

我们先创建一个房间,然后创建一扇门,这样一个房子就建好了。这就是建造者模式。

5 原始设计模式 prototype

场景:对象简单,整个对象clone,
需求场景:例如画直线;我们一般都是拷贝一条,然后调整线的长度、颜色等属性;
Python实现:
创建一个Line类:

class Line:

    def __init__(self):
        self.color = '黑色'
        self.length = 6

    def get_color(self):
        return self.color

    def get_length(self):
        return self.length

创建一个LineTool类:

class LineTool:

    # 划线函数
    def clone(self):
        line = Line.Line()
        line_a = copy.deepcopy(line)
        return line_a

通过clone返回一个对象,这就是原始设计模式。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值