python几种设计模式_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返回一个对象,这就是原始设计模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值