23種設計模式python實現(1 建立型模式)

2021-10-02 23:33:09 字數 3500 閱讀 9926

在這裡,建立型模式包括:

1 單例模式;2 工廠方法模式;3 抽象工廠模式;4 建立者模式;5 原始設計模式。

作用:單一的建立乙個物件

需求場景:個人對身份證的管理

python實現:

建立乙個identitycard的類;

class

identitycard

:def

__init__

(self)

: self.name =

'令狐沖'

self.id=

'120234023049239832'

self.address =

'北京市'

建立乙個person的類管理identitycard

class

person

: identity_card =

none

# 獲取個人的身份證

defget_identity_id

(self)

:if self.identity_card is

none

: self.identity_card = identitycard.identitycard(

)return self.identity_card

作用:通過乙個方法建立不同的物件

需求與場景:想買一輛車,選擇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

作用:通過乙個類建立多個物件。

需求場景:乙個人到乙個陌生的城市打工,逐漸富有以後,會買房、買車、娶媳婦。

python實現:

建立類car(汽車)、house(房子)和wife(媳婦)

建立abstractfactory類來實現目標。

class

abstractfactory

:# 買一輛小轎車

defbuy_car

(self)

: car = car(

)return car

# 買一座房子

defbuy_house

(self)

: house = house(

)return house

# 娶乙個好女孩

defmarry_wife

(self)

: wife = wife(

)return wife

作用:。建立乙個物件的多個部分

需求場景:例如建造房子

python實現:

建立乙個house類:

class

house

:def

__init__

(self)

: self.room =

'' self.door =

''# 返回房間

defget_room

(self)

:return self.room

# 返回門

defget_door

(self)

:return self.door

建立乙個housebuilder類:

class

housebuilder()

:def

__init__

(self)

: self.house = house(

)# 構建房間

defbuild_room

(self, room)

: self.house.room = room

# 構建門

defbuild_door

(self, door)

: self.house.door = door

defget_house

(self)

:return self.house

建立乙個housedirector類:

class

housedirector

:def

__init__

(self)

:pass

defbuild_house

(self)

: builder = housebuilder(

) builder.build_room(

'木頭房'

) builder.build_door(

'三角門'

)return builder.get_house(

)

我們先建立乙個房間,然後建立一扇門,這樣乙個房子就建好了。這就是建造者模式。

場景:物件簡單,整個物件clone,

需求場景:例如畫直線;我們一般都是拷貝一條,然後調整線的長度、顏色等屬性;

python實現:

建立乙個line類:

class

line

:def

__init__

(self)

: self.color =

'黑色'

self.length =

6def

get_color

(self)

:return self.color

defget_length

(self)

:return self.length

建立乙個linetool類:

class

linetool

:# 劃線函式

defclone

(self)

: line = line.line(

) line_a = copy.deepcopy(line)

return line_a

通過clone返回乙個物件,這就是原始設計模式。

Python 23種設計模式

單例模式 當類例項化一次後,就會一直使用該例項化,而不會建立新的例項化物件。不加單例模式的例項化效果 class singleton object pass obj1 singleton print obj1 main singleton object at 0x00000167a41c7700 o...

23種設計模式之python實現 單例模式

好了,今天就先實現這幾個模式吧。理解 世界上有一些東西是唯一的,比如地球,或者如果乙個辦公室只用一台印表機,那這台印表機也是唯一的 例子 實現只有乙個地球 class singleton object def new cls,args,kw if not hasattr cls,instance o...

設計模式 23種設計模式

一 軟體設計模式的概念 軟體設計模式 software design pattern 又稱設計模式,是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。它描述了在軟體設計過程中的一些不斷重 生的問題,以及該問題的解決方案。也就是說,它是解決特定問題的一系列套路,是前輩們的 設計經驗的總結...