最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python設(shè)計(jì)模式之抽象工廠模式原理與用法詳解

 更新時(shí)間:2019年01月15日 14:36:06   作者:Andy冉明  
這篇文章主要介紹了Python設(shè)計(jì)模式之抽象工廠模式,簡(jiǎn)單講述了抽象工廠模式的概念、原理并結(jié)合實(shí)例形式分析了Python實(shí)現(xiàn)與使用抽象工廠模式的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Python設(shè)計(jì)模式之抽象工廠模式原理與用法。分享給大家供大家參考,具體如下:

抽象工廠模式(Abstract Factory Pattern):提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無需指定它們的類

下面是一個(gè)抽象工廠的demo:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大話設(shè)計(jì)模式
設(shè)計(jì)模式——抽象工廠模式
抽象工廠模式(Abstract Factory Pattern):提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無需指定它們的類
"""
import sys
#抽象用戶表類
class User(object):
  def get_user(self):
    pass
  def insert_user(self):
    pass
#抽象部門表類
class Department(object):
  def get_department(self):
    pass
  def insert_department(self):
    pass
#操作具體User數(shù)據(jù)庫類-Mysql
class MysqlUser(User):
  def get_user(self):
    print 'MysqlUser get User'
  def insert_user(self):
    print 'MysqlUser insert User'
#操作具體Department數(shù)據(jù)庫類-Mysql
class MysqlDepartment(Department):
  def get_department(self):
    print 'MysqlDepartment get department'
  def insert_department(self):
    print 'MysqlDepartment insert department'
#操作具體User數(shù)據(jù)庫-Orcal
class OrcaleUser(User):
  def get_user(self):
    print 'OrcalUser get User'
  def insert_user(self):
    print 'OrcalUser insert User'
#操作具體Department數(shù)據(jù)庫類-Orcal
class OrcaleDepartment(Department):
  def get_department(self):
    print 'OrcalDepartment get department'
  def insert_department(self):
    print 'OrcalDepartment insert department'
#抽象工廠類
class AbstractFactory(object):
  def create_user(self):
    pass
  def create_department(self):
    pass
class MysqlFactory(AbstractFactory):
  def create_user(self):
    return MysqlUser()
  def create_department(self):
    return MysqlDepartment()
class OrcaleFactory(AbstractFactory):
  def create_user(self):
    return OrcaleUser()
  def create_department(self):
    return OrcaleDepartment()
if __name__ == "__main__":
  db = sys.argv[1]
  myfactory = ''
  if db == 'Mysql':
    myfactory = MysqlFactory()
  elif db == 'Orcal':
    myfactory = OrcaleFactory()
  else:
    print "不支持的數(shù)據(jù)庫類型"
    exit(0)
  user = myfactory.create_user()
  department = myfactory.create_department()
  user.insert_user()
  user.get_user()
  department.insert_department()
  department.get_department()

上面類的設(shè)計(jì)如下圖:

優(yōu)點(diǎn):

具體工廠類如MysqlFactory在一個(gè)應(yīng)用中只需要初始化一次,這樣改動(dòng)一個(gè)具體工廠變得很容易,只需要改變具體工廠就可以改變整個(gè)產(chǎn)品的配置。

具體的創(chuàng)建實(shí)例過程與客戶端分離,客戶端通過他們的抽象接口操縱實(shí)例,產(chǎn)品的具體類名也被具體工廠的實(shí)現(xiàn)分離,不會(huì)出現(xiàn)在客戶端代碼中

缺點(diǎn):在新增一個(gè)具體工廠就需要增加多個(gè)類才能實(shí)現(xiàn)

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Linux下為不同版本python安裝第三方庫

    Linux下為不同版本python安裝第三方庫

    本文給大家分享了下作者是如何在linux下為python2.x以及python3.x安裝第三方庫的方法,十分的實(shí)用,有需要的小伙伴可以參考下
    2016-08-08
  • Python+Django+MySQL實(shí)現(xiàn)基于Web版的增刪改查的示例代碼

    Python+Django+MySQL實(shí)現(xiàn)基于Web版的增刪改查的示例代碼

    這篇文章主要介紹了Python+Django+MySQL實(shí)現(xiàn)基于Web版的增刪改查的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • python如何利用中心坐標(biāo)繪制矩形

    python如何利用中心坐標(biāo)繪制矩形

    這篇文章主要介紹了python如何利用中心坐標(biāo)繪制矩形問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python3注冊(cè)全局熱鍵的實(shí)現(xiàn)

    python3注冊(cè)全局熱鍵的實(shí)現(xiàn)

    這篇文章主要介紹了python3注冊(cè)全局熱鍵的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 詳解Open Folder as PyCharm Project怎么添加的方法

    詳解Open Folder as PyCharm Project怎么添加的方法

    這篇文章主要介紹了詳解Open Folder as PyCharm Project怎么添加的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • TensorFLow用Saver保存和恢復(fù)變量

    TensorFLow用Saver保存和恢復(fù)變量

    這篇文章主要為大家詳細(xì)介紹了TensorFLow用Saver保存和恢復(fù)變量,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python實(shí)現(xiàn)批量nii文件轉(zhuǎn)換為png圖像

    python實(shí)現(xiàn)批量nii文件轉(zhuǎn)換為png圖像

    這篇文章主要介紹了python實(shí)現(xiàn)批量nii文件轉(zhuǎn)換為png圖像,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python實(shí)現(xiàn)打印實(shí)心和空心菱形

    Python實(shí)現(xiàn)打印實(shí)心和空心菱形

    今天小編就為大家分享一篇Python實(shí)現(xiàn)打印實(shí)心和空心菱形,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 在Python中定義函數(shù)并調(diào)用的操作步驟

    在Python中定義函數(shù)并調(diào)用的操作步驟

    這篇文章主要介紹了在Python中如何定義函數(shù)并調(diào)用它,函數(shù)的定義和調(diào)用是Python編程中最基本也是最重要的概念之一,掌握它們對(duì)于進(jìn)行有效的Python編程至關(guān)重要,需要的朋友可以參考下
    2024-01-01
  • Django提示mysql版本過低:django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26).的解決方法

    Django提示mysql版本過低:django.db.utils.NotSupportedError: My

    這篇文章主要介紹了Django提示mysql版本過低:django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26).的解決方法,文中有詳細(xì)的解決方案,具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-03-03

最新評(píng)論

东台市| 霍林郭勒市| 岳池县| 沛县| 庄河市| 东辽县| 正定县| 红安县| 广灵县| 新和县| 灌云县| 孟津县| 大竹县| 银川市| 博野县| 松原市| 黔南| 石林| 澎湖县| 聂荣县| 长顺县| 永福县| 正宁县| 合肥市| 车险| 织金县| 平舆县| 许昌县| 金乡县| 长沙县| 济南市| 临澧县| 米泉市| 宁南县| 兴国县| 千阳县| 电白县| 卓资县| 利川市| 左贡县| 莱阳市|