共计 1032 个字符,预计需要花费 3 分钟才能阅读完成。
今天小崔和小雷出门去餐厅吃饭,为了庆祝一下。来到餐厅之后,服务员过来拿着菜单,小崔看着菜单12345点了5个菜,确定了这顿饭的菜单之后,服务员把这些菜单交到后厨,后厨按照给出的菜单一道一道的做出来。
这个点菜到做菜的过程就是命令模式的实现,客户端就是小崔和小雷,发出菜单的请求,他们不关心这些菜是怎么做成的。服务员就是指挥者的角色,将菜单转交给后厨,每一道菜就是一个命令,后厨厨师看到菜单就开始做菜。
下面给出一个代码示例说明上面这个图:
# -*- 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 ...
正文完
请博主喝杯咖啡吧!