python设计模式–命令模式

1,426次阅读次阅读
没有评论

今天小崔和小雷出门去餐厅吃饭,为了庆祝一下。来到餐厅之后,服务员过来拿着菜单,小崔看着菜单12345点了5个菜,确定了这顿饭的菜单之后,服务员把这些菜单交到后厨,后厨按照给出的菜单一道一道的做出来。

这个点菜到做菜的过程就是命令模式的实现,客户端就是小崔和小雷,发出菜单的请求,他们不关心这些菜是怎么做成的。服务员就是指挥者的角色,将菜单转交给后厨,每一道菜就是一个命令,后厨厨师看到菜单就开始做菜。

python设计模式--命令模式

下面给出一个代码示例说明上面这个图:

# -*- coding: utf-8 -*-
# @Time    : 2018/8/19 下午5:45
# @Author  : zhusimaji
# @File    : cook.py
# @Software: PyCharm
class customer(object):
    def __init__(self,*args):
        self.namelist=[ x for x in args]
        self.cooklist=[]
    def order_dish(self,dishname):
        self.cooklist.append(dishname)


class servicer(object):
    def __init__(self,name):
        self.name=name

    def get_customer(self,customer):
        self.dishlist=customer.cooklist
        print('{} recieve dish list'.format(self.dishlist))


class cooker(object):
    def __init__(self,name):
        self.name=name
    def get_dish(self,servicer):
        for x in servicer.dishlist:
            self.cook_dish(x)

    def cook_dish(self,dish):
        print('start cook {}  ...\n'.format(dish))



if __name__ == '__main__':
   cx= customer('xiapcui')
   cx.order_dish('a1')
   cx.order_dish('a2')

   cy=servicer('xiaoming')
   cy.get_customer(cx)

   cz=cooker('xiaozhu')
   cz.get_dish(cy)

代码输出结果

['a1', 'a2'] recieve dish list
start cook a1  ...

start cook a2  ...
admin
版权声明:本站原创文章,由admin2018-08-19发表,共计1677字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)