婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python設計模式之抽象工廠模式詳解

python設計模式之抽象工廠模式詳解

熱門標簽:企業彩鈴地圖標注 上海正規的外呼系統最新報價 長春極信防封電銷卡批發 外賣地址有什么地圖標注 電銷機器人錄音要學習什么 煙臺電話外呼營銷系統 如何地圖標注公司 預覽式外呼系統 銀川電話機器人電話

抽象工廠模式(Abstract Factory Pattern):屬于創建型模式,它提供了一種創建對象的最佳方式。在抽象工廠模式中,接口是負責創建一個相關對象的工廠,不需要顯式指定它們的類,每個生成的工廠都能按照工廠模式提供對象。

意圖: 提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。

主要解決: 主要解決接口選擇的問題。

何時使用: 系統的產品有多于一個的產品族,而系統只消費其中某一族的產品。

如何解決: 在一個產品族里面,定義多個產品。

關鍵代碼: 在一個工廠里聚合多個同類產品。

優點: 當一個產品族中的多個對象被設計成一起工作時,它能保證客戶端始終只使用同一個產品族中的對象。抽象工廠模式相較于工廠模式,劃分更加明確清晰,面對復雜的生產任務,管理和生產性能會更加高效。

缺點: 產品族擴展非常困難,要增加一整個系列的某一產品。

注意事項: 產品族難擴展,產品等級易擴展。

應用實例: 對于一個生產水果的工廠,工廠模式主要針對一種水果創建一個涵蓋與該水果相關所有業務的工廠(例如:葡萄的運輸、保存、加工、包裝、售賣等相關業務全部被該工廠承包);而抽象工廠模式主要針對生產其中的某一環節進行創建相應的工廠(例如:運輸工廠負責管理所有水果的運輸,售賣工廠負責管理所有水果的價格和售賣,庫存工廠負責管理所有水果的庫存計數等)。


那我們來一起使用抽象工廠模式,構建一個購買水果的收銀小項目吧!(づ。◕ᴗᴗ◕。)づ

實現的思路

項目的主體包含6個部分:消費者(買水果的人),水果工廠(賣水果的人),水果工廠旗下的子工廠(品種工廠、價格工廠、包裝工廠、稱重工廠消費者主要向水果工廠傳達“購買需求”的相關信息(水果的種類、包裝、重量等…);水果工廠主要針對消費者的不同“購買需求”將任務分派給子工廠進行執行;品種工廠負責管理水果的種類,價格工廠負責管理水果的價格,稱重工廠負責水果的稱重,包裝工廠負責水果的包裝方式。

項目的UML用例圖如下:

實現的代碼如下:

class FruitClass:
    # 品種工廠
    def get_name(self, name_index):
        if name_index == 0:
            name_object = OrangeClass()
        elif name_index == 1:
            name_object = Hami_MelonClass()
        elif name_index == 2:
            name_object = GrapeClass()
        else:
            name_object = None

        return name_object


class OrangeClass:
    # 橘子類
    def __init__(self):
        self.name = "橘子"

    def print_name(self):
        print("您購買的水果為:%s" % self.name)


class Hami_MelonClass:
    # 哈密瓜類
    def __init__(self):
        self.name = "哈密瓜"

    def print_name(self):
        print("您購買的水果為:%s" % self.name)


class GrapeClass:
    # 葡萄類
    def __init__(self):
        self.name = "葡萄"

    def print_name(self):
        print("您購買的水果為:%s" % self.name)


class FruitWeight:
    # 稱重工廠
    def __init__(self, weight):
        self.weight = float(weight)

    def print_weight(self):
        print("該水果的重量為:%.2f千克" % self.weight)


class FruitPrice:
    # 價格工廠
    def get_price(self, name_index, variety):
        if name_index == 0:
            price_object = OrangePrice(variety)
        elif name_index == 1:
            price_object = Hami_MelonPrice()
        elif name_index == 2:
            price_object = GrapePrice()
        else:
            price_object = None

        return price_object


class OrangePrice:
    # 橘子價格類
    def __init__(self, variety):
        self.variety = variety
        if self.variety == 1:
            self.price = 8.5
        else:
            self.price = 11.0

    def print_price(self):
        print("該水果的單價為:%.2f元/千克" % self.price)


class Hami_MelonPrice:
    # 哈密瓜價格類
    def __init__(self):
        self.price = 24.3

    def print_price(self):
        print("該水果的價格為:%.2f元/千克" % self.price)


class GrapePrice:
    # 葡萄價格類
    def __init__(self):
        self.price = 16.2

    def print_price(self):
        print("該水果的價格為:%.2f元/千克" % self.price)
        return self.price


class FruitPack:
    # 包裝工廠
    def __init__(self, pack):
        if pack == 1:
            self.pack = "散稱"
        else:
            self.pack = "盒裝"

    def print_pack(self):
        print("該水果的打包方式為:%s" % self.pack)


class FruitFactory:
    def __init__(self, name_index, weight, variety, pack):
        # 任務的分配,品種、重量、價格、包裝方式
        self.name_object = FruitClass().get_name(name_index)
        self.weight_object = FruitWeight(weight)
        self.price_object = FruitPrice().get_price(name_index, variety)
        self.pack_object = FruitPack(pack)

    def print_purchase(self):
        # 計算購買的金額
        money = self.price_object.price * self.weight_object.weight
        print("需要支付的金額共計為:%.2f元" % money)

    def show_info(self):
        # 展示最終的購買信息
        self.name_object.print_name()
        self.weight_object.print_weight()
        self.price_object.print_price()
        self.pack_object.print_pack()
        self.print_purchase()
        print("-*-" * 20)


class Consumer:
    # 消費者類
    def __init__(self):
        print("-*-" * 20)
        # 輸入原始的“購買需求”信息
        self.name = input("請輸入你要購買的水果名稱:0.橘子 1.哈密瓜 2.葡萄\n")
        self.weight = input("請輸入你要購買水果的重量(kg):\n")
        self.variety = input("如果您購買橘子,我們有2種橘子:0.不買橘子 1.甘橘 2.砂糖橘\n")
        self.pack = input("請您選擇該水果的包裝方式:1.散稱 2.盒裝\n")
        print("-*-" * 20)

    def request(self):
        # 返回相關的購買信息
        return self.name, self.weight, self.variety, self.pack


if __name__ == '__main__':
    # 創建顧客
    buyer = Consumer()
    # 拿到顧客的購買信息
    buy_info = buyer.request()
    # 使用水果工廠,傳達指令至旗下的子工廠并執行購買操作
    buy_res = FruitFactory(int(buy_info[0]), int(buy_info[1]), int(buy_info[2]), int(buy_info[3]))
    # 購買信息的展示
    buy_res.show_info()

相關的測試用例:

本文關于設計模式的講解思想,參考鏈接:抽象工廠模式
如果有對python類的創建和繼承等用法還不熟悉的小伙伴,請參考這篇博客: python類的繼承

到此這篇關于python設計模式之抽象工廠模式的文章就介紹到這了,更多相關python抽象工廠模式內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python設計模式之抽象工廠模式原理與用法詳解
  • Python設計模式之抽象工廠模式
  • 舉例講解Python設計模式編程中對抽象工廠模式的運用
  • 舉例講解Python設計模式編程的代理模式與抽象工廠模式

標簽:西寧 上饒 珠海 盤錦 宜昌 湖北 佳木斯 潮州

巨人網絡通訊聲明:本文標題《python設計模式之抽象工廠模式詳解》,本文關鍵詞  python,設計模式,之,抽象,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python設計模式之抽象工廠模式詳解》相關的同類信息!
  • 本頁收集關于python設計模式之抽象工廠模式詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩一区二区精品在线观看| 久久超碰97中文字幕| 成a人片国产精品| 久久久久久久综合日本| 中文幕一区二区三区久久蜜桃| 日韩午夜在线观看| 亚洲最大成人网4388xx| 五月婷婷另类国产| 欧美综合天天夜夜久久| 免费观看在线综合色| 久久99国产精品久久99| 欧美日韩一卡二卡三卡 | 亚洲一区二区视频| 亚洲男人天堂一区| 紧缚捆绑精品一区二区| 日韩av高清在线观看| 成人免费看片app下载| 日韩三级精品电影久久久| 夜夜精品浪潮av一区二区三区| 91精品国产综合久久久久久久久久 | 性久久久久久久久| 免播放器亚洲一区| 免费人成网站在线观看欧美高清| 国产一区二区三区| 欧美亚洲国产一区在线观看网站 | 欧美日韩在线播放三区| 七七婷婷婷婷精品国产| 成人一区在线观看| 亚洲欧美日韩一区二区| 久久久久综合网| 国产中文字幕一区| 国产一区二区女| 欧美日韩在线播放三区四区| 国产91在线|亚洲| 国产综合一区二区| 欧美在线短视频| 国产午夜精品美女毛片视频| 午夜影视日本亚洲欧洲精品| 韩日精品视频一区| 91精品在线免费| 亚洲成在线观看| 欧美手机在线视频| 亚洲毛片av在线| 97久久超碰国产精品电影| 久久精品亚洲国产奇米99| 激情成人综合网| 精品国产91乱码一区二区三区| 一区二区三区小说| 亚洲午夜激情网站| 6080亚洲精品一区二区| 日本成人在线视频网站| 日韩欧美中文字幕公布| 国产一区久久久| 欧美成人猛片aaaaaaa| 成人一道本在线| 亚洲va欧美va人人爽| 欧美不卡激情三级在线观看| 精品影视av免费| 国产亚洲综合av| 欧美久久久久中文字幕| 久久se精品一区二区| 久久一区二区三区四区| 在线免费亚洲电影| 91在线精品秘密一区二区| 精品久久一区二区三区| 蜜臀av亚洲一区中文字幕| 51午夜精品国产| 亚洲午夜久久久久久久久久久 | 成人av免费网站| 亚洲精品国久久99热| 美脚の诱脚舐め脚责91| 奇米精品一区二区三区在线观看| 国产一区二区91| 欧美日韩国产高清一区二区三区 | 日韩欧美第一区| 一本久久a久久精品亚洲| 欧美日韩国产中文| 视频一区视频二区中文字幕| 欧美精品久久99| 国产**成人网毛片九色| 中文字幕字幕中文在线中不卡视频| 成人污视频在线观看| 国产精品久久久久精k8 | 久久久99精品久久| 欧美性生交片4| 成人av午夜电影| 日韩av电影免费观看高清完整版| 亚洲黄色尤物视频| 国产精品久久久久天堂| 欧美人xxxx| 欧美三区在线观看| 国产91清纯白嫩初高中在线观看| 2023国产精品| 一区二区激情视频| 国产精品午夜免费| 精品写真视频在线观看| 欧美色爱综合网| 欧美日韩国产小视频| 中文字幕综合网| 精品一区二区三区在线视频| 91免费看视频| 欧美日韩亚洲综合在线| 91精品欧美久久久久久动漫 | 日韩av电影天堂| 日本欧美一区二区三区| 日韩av一区二区在线影视| 五月天中文字幕一区二区| 久久99久久99小草精品免视看| 成人丝袜高跟foot| 91婷婷韩国欧美一区二区| 欧美一级免费大片| 久久久不卡影院| 亚洲成av人片www| 欧美性欧美巨大黑白大战| 91精品国产一区二区| 亚洲成人av免费| 成人黄色a**站在线观看| 欧美精品一区二区久久婷婷| 蜜桃av一区二区在线观看| 色悠悠亚洲一区二区| 亚洲人成在线观看一区二区| 精品在线免费视频| 精品国产成人在线影院 | 午夜国产精品一区| av资源网一区| 亚洲男同1069视频| 欧美日韩一区成人| 美日韩一级片在线观看| 日韩视频在线观看一区二区| 午夜精品久久久久久久久| 欧美区在线观看| 午夜电影久久久| 亚洲欧洲av另类| 欧美日韩国产片| 岛国av在线一区| 亚洲综合色视频| 亚洲国产高清在线观看视频| 91看片淫黄大片一级在线观看| 亚洲婷婷综合久久一本伊一区| 这里只有精品免费| 亚洲男人都懂的| 精品视频1区2区3区| 极品瑜伽女神91| 欧美高清在线一区| 欧美性生交片4| 精品午夜一区二区三区在线观看| 国产日韩成人精品| 91久久精品一区二区| 亚洲国产精品一区二区www在线| 日韩欧美激情四射| av男人天堂一区| 国内外成人在线视频| 亚洲电影一区二区三区| 久久久不卡影院| 精品福利二区三区| 日韩午夜在线播放| 日产欧产美韩系列久久99| 国产蜜臀av在线一区二区三区| 欧美亚洲一区三区| 国产一区在线观看麻豆| 亚洲欧美视频在线观看视频| 久久无码av三级| 欧美系列日韩一区| 日本韩国视频一区二区| 色综合色综合色综合色综合色综合| 亚洲成人免费电影| 日本大胆欧美人术艺术动态| 亚洲v精品v日韩v欧美v专区| 亚洲一卡二卡三卡四卡五卡| 亚洲精品成a人| 亚洲午夜一区二区三区| 视频一区中文字幕| 国产一区二区三区综合| 成人av在线资源| 欧美另类一区二区三区| 777精品伊人久久久久大香线蕉| 欧美日韩在线观看一区二区 | 国产91综合网| 337p粉嫩大胆噜噜噜噜噜91av| 日本韩国一区二区三区视频| 成人免费福利片| 欧美日韩一区中文字幕| 欧美一区二区性放荡片| 久久精品免视看| 久久精品国产亚洲一区二区三区| 国产精品人人做人人爽人人添| 一区二区三区电影在线播| 狠狠色丁香久久婷婷综合_中| 99久久免费国产| 日韩午夜av电影| 亚洲国产综合色| 国产精品一区二区你懂的| 在线观看日韩电影| 国产精品久久久久久久第一福利| 一区二区三区久久| 久久激情五月婷婷| 在线视频国产一区| 亚洲色图制服诱惑 | www.日韩精品| 久久久久久久久伊人|