• 技术文章 >Python技术 >Python基础教程

    python建造者模式是什么

    小妮浅浅小妮浅浅2021-08-23 09:30:52原创2136

    说明

    1、属于创建型模式,提供了创建对象的最佳方式。

    2、该模式使用多个简单的对象逐步构建复杂的对象,Builder类逐步构建最终对象,该Builder类独立于其他对象。

    由各部分的子对象用一定的算法构成,因为需求的变化,该复杂对象的各部分经常面临剧烈的变化,但结合起来的算法相对稳定。

    实例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    94

    95

    96

    97

    98

    99

    100

    101

    102

    103

    104

    105

    106

    107

    108

    109

    110

    111

    112

    113

    114

    115

    116

    117

    118

    119

    120

    121

    122

    123

    124

    125

    126

    127

    128

    129

    130

    131

    132

    133

    134

    135

    136

    137

    138

    139

    140

    141

    142

    143

    144

    145

    146

    147

    148

    149

    150

    151

    152

    153

    154

    155

    156

    157

    158

    159

    160

    161

    162

    163

    class Item:

        # Item类提供水果的基础信息的抽象类

        def set_name(self):

            pass

      

        def packing(self):

            pass

      

        def set_price(self):

            pass

      

        def set_weight(self):

            pass

      

        def promotion_price(self):

            pass

      

      

    class Pack:

        # Pack管理水果的包装方式

        def pack(self):

            pass

      

      

    class box_pack(Pack):

        # box-pack采用盒装方式

        def pack(self):

            return "盒装"

      

      

    class bag_pack(Pack):

        # bag-pack采用袋装方式

        def pack(self):

            return "袋装"

      

      

    class Grape(Item):

        # 葡萄类

        def packing(self):

            wrap = box_pack()

            return wrap

      

        def set_price(self):

            grape_price = 18.0

            return grape_price

      

        def set_name(self):

            grape_name = "葡萄"

            return grape_name

      

        def set_weight(self):

            grape_weight = 2.5

            return grape_weight

      

        def promotion_price(self):

            return 28.99

      

      

    class Hami_Melon(Item):

        # 哈密瓜类

        def packing(self):

            wrap = bag_pack()

            return wrap

      

        def set_price(self):

            hami_melon_price = 22.0

            return hami_melon_price

      

        def set_name(self):

            hami_melon_name = "哈密瓜"

            return hami_melon_name

      

        def set_weight(self):

            hami_melon_weight = 3.2

            return hami_melon_weight

      

        def promotion_price(self):

            return 39.99

      

      

    class Orange(Item):

        # 橘子大类

        def packing(self):

            wrap = bag_pack()

            return wrap

      

        def set_price(self):

            pass

      

      

    class Citrus(Orange):

        # 柑橘类

        def set_price(self):

            citrus_price = 12.5

            return citrus_price

      

        def set_name(self):

            citrus_name = "柑橘"

            return citrus_name

      

        def set_weight(self):

            citrus_weight = 2.6

            return citrus_weight

      

        def promotion_price(self):

            return 18.88

      

      

    class Tangerine(Orange):

        # 冰橘类

        def set_price(self):

            tangerine_price = 13.0

            return tangerine_price

      

        def set_name(self):

            tangerine_name = "冰橘"

            return tangerine_name

      

        def set_weight(self):

            citrus_weight = 3.3

            return citrus_weight

      

        def promotion_price(self):

            return 26.66

      

      

    class Menu:

        def __init__(self):

            self.items = []

      

        def AddItem(self, item):

            # 添加item,即添加参与促销活动的水果

            self.items.append(item)

      

        def ShowItems(self):

            # ShowItem,展示参与促销活动的水果清单

            print("-*-" * 5 + "限时促销清单" + "-*-" * 10)

            for item in self.items:

                print("◎Item:" + item.set_name() + " 包装:" + item.packing().pack() + " 原价:" + str(

                    item.set_price()) + "元/千克" + " 重量:" + str(item.set_weight()) + "千克" + "\n        限时促销价:" +

                      str(item.promotion_price()) + "元!!!")

            print("-*-" * 5 + "限时促销清单" + "-*-" * 10)

      

      

    class MenuBuilder:

        @staticmethod

        def PrepareMenu():

            # 构造清单,过程如下:

            menu = Menu()

            menu.AddItem(Grape())

            menu.AddItem(Citrus())

            menu.AddItem(Tangerine())

            menu.AddItem(Hami_Melon())

            return menu

      

      

    if __name__ == '__main__':

        # 新建一个建造者

        menu_builder = MenuBuilder()

        # 建造促销活动的水果清单

        menu_object = menu_builder.PrepareMenu()

        # 展示参与促销活动的水果信息

        menu_object.ShowItems()

    以上就是python建造者模式的介绍,希望对大家有所帮助。更多Python学习指路:python基础教程

    本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

    专题推荐:python建造者模式
    上一篇:python线程事件Event的原理 下一篇:python中Pylint的信息类型

    相关文章推荐

    • python析构函数的使用注意• python中类对象的介绍• python类属性的概念• python类属性的内存分析• python类方法的使用注意• python静态方法的使用注意点• python访问元组的两种方法• python多线程的执行分析• python字符串结合操作符的使用• python中mainloop()方法的使用• python设置的窗口位置• python中del在垃圾回收的使用• python线程中Condition的原理• python线程事件Event的原理

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网