目錄
- 面向物件之設計模式
- 一、設計模式概述
- 二、學習意義
- 三、設計模式分類
- 四、創建型模式之單例模式
- 1、單例模式的內容
- 2、使用單例模式的目的
- 3、單例模式實作方式
- 方式一:
- 方式二:
- 方式三:
面向物件之設計模式
一、設計模式概述
? 設計模式(Design Pattern)是前輩們對代碼開發經驗的總結,是解決特定問題的一系列套路,它不是語法規定,而是一套用來提高代碼可復用性、可維護性、穩健性以及安全性的解決方案,
? 1995年,GoF(Gang of Four,四人組/四人幫)合作出版了《設計模式:可復用面向物件軟體的基礎》一書,共收錄了23種設計模式,從此樹立了軟體設計模式領域的里程碑,人稱"GoF設計模式",
二、學習意義
? 設計模式的本質是面向物件設計原則的實際運用,是對類的封裝性、繼承性和多型性以及類的關聯關系和組合關系的充分理解
正確使用設計模式具有以下優點:
? 1.可以提高程式員的思維能力、編程能力和設計能力
? 2..使程式設計更加標準化、代碼編制更加工程化,使軟體開發效率大大提高,從而縮短軟體的開發周期,
? 3.使設計的代碼可重用性高、可讀性強、可靠性高、靈活型好、可維護性強,
三、設計模式分類
? 設計模式一共有23種
- 創建型模式(5種):
- 工廠模式、抽象工廠模式、創建者模式、原型模式、單例模式
- 結構型模式(7種):
- 配接器模式、橋模式、組合模式、裝飾模式、外觀模式、亨元模式、代理模式
- 行為型模式(11種):
- 解釋器模式、責任鏈模式、命令模式、迭代器模式、中介責模式、備忘錄模式、觀察者模式、狀態模式、策略模式、訪問者模式、模板方法模式
四、創建型模式之單例模式
1、單例模式的內容
? 保證一個類只有一個實體,并提供一個訪問它的全域訪問點,
2、使用單例模式的目的
- 當類中有很多非常強大的方法 我們在程式中很多地方都需要使用
- 如果不做單例 會產生很多無用的物件浪費存盤空間
- 我們想著使用單例模式 整個程式就用一個物件
3、單例模式實作方式
方式一:
class A:
# 1、在類中定義全域變數,用來系結已生成的物件
__instance = None
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
# 2、系結給類的方法
@classmethod
def singleton(cls):
# 3、當使用類呼叫該方法時,進行判斷
if not slc.__instance:
# 4、當類未生成物件時,生成一個物件
cls.__instance = cls('kangkang', 18, 'male')、
# 5、當類已生成物件時,將系結物件的變數回傳給呼叫者
return cls.__instance
res = A.singleton()
res1 = A.singleton()
print(id(res), id(res1))
方式二:
'''基于模塊的單例模式:提前產生一個物件 之后導模塊使用'''
class B:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
obj = B('kangkang', 18, 'male')
方式三:
def outer(cls):
__instance = cls('kangkang', 18, 'male')
def inner(*args, **kwargs):
if args or kwargs:
obj = cls(*args, **kwargs)
return obj
return __instance
return inner
@outer
class C:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
res = C()
res1 = C()
print(id(res), id(res1))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/530583.html
標籤:設計模式
