class TeaMilk:
def __init__(self):
pass
def prepare(self):
pass
class Recevier:
def __init__(self):
pass
def prepareRedTeaMilk(self):
print('prepare red tea milk')
def prepareBlackTeaMilk(self):
print('prepare black tea milk')
class RedTeaMilk(TeaMilk):
def __init__(self, Recevier):
self.recevier = Recevier
def prepare(self):
self.recevier.prepareRedTeaMilk()
class BlackTeaMilk(TeaMilk):
def __init__(self, Recevier):
self.recevier = Recevier
def prepare(self):
self.recevier.prepareBlackTeaMilk()
class waiter:
cmd = []
def __init__(self):
pass
def order(self, milk):
self.cmd.append(milk)
def remove(self, milk):
print('remove obj', milk)
self.cmd.remove(milk)
def execute(self):
print(self.cmd)
for i in self.cmd:
i.prepare()
if __name__ == '__main__':
waiter = waiter()
recevier = Recevier()
redTeaMilk = RedTeaMilk(recevier)
blackTeaMilk = BlackTeaMilk(recevier)
waiter.order(redTeaMilk)
waiter.order(blackTeaMilk)
waiter.execute()
waiter.remove(blackTeaMilk)
waiter.execute()
命令行模式:
把一个个请求封装成一个个对象,加入一个invoker,
command抽象命令类ConcreteCommand具体命令类Invoker调用者/请求者- 请求的发送者,它通过命令对象来执行请求。一个调用者并不需要在设计时确定其接受者,因此它只与抽象命令之间存在关联。在程序运行时,将调用命令对象的
execute(),间接调用接收者的相关操作。
- 请求的发送者,它通过命令对象来执行请求。一个调用者并不需要在设计时确定其接受者,因此它只与抽象命令之间存在关联。在程序运行时,将调用命令对象的
-
Receiver接收者
接收者执行与请求相关的操作,具体实现对请求的业务处理。未抽象前,实际执行操作内容的对象 -
Client客户类
在客户类中需要创建调用者对象、具体命令类对象,在创建具体命令对象时指定对应的接收者。发送者和接收者之间没有直接关系,都通过命令对象间接调用。
