class Text:
def __init__(self, t):
self.__t = t
def get(self):
return self.__t
class Message:
def __init__(self, text):
self.text = text
def get(self):
return self.text.get()
class Formatter:
def format(self, msg):
return msg
class Buffer:
def __init__(self):
self.msg = None
def write(self, msg):
self.msg = msg
def read(self):
return self.msg
class A:
def __init__(self, device, f):
f(device)
class StartList:
def __enter__(self):
self.O = []
return self.O # ここでリストを返すと 'as' 以降に代入されます
def __exit__(self, exc_type, exc_val, exc_tb):
pass
class WITH:
def __init__(self, device_class):
self.__K = []
# インスタンス化してから with に入れます
with device_class() as lst:
self.__K = lst
def get_list(self):
return self.__K
class OutputDevice:
def send(self, msg):
A(msg.get(), (lambda a: print(a)))
class Printer:
def __init__(self, device):
self.device = device
def print(self, msg):
self.device.send(msg)
class Echo:
def __init__(self, printer):
self.printer = printer
def run(self, msg):
self.printer.print(msg)
class Stack:
def __init__(self):
self.__data = WITH(StartList).get_list()
def push(self, m):
self.__data.append(m)
def top(self):
return self.__data[-1]
class Queue:
def __init__(self):
self.q = WITH(StartList).get_list()
class Holder:
def __init__(self, x):
self.x = x
def get(self):
return self.x
class Wrapper:
def __init__(self, x):
self.x = x
def unwrap(self):
return self.x
class Executor:
def __init__(self, echo):
self.echo = echo
def exec(self, msg):
self.echo.run(msg)
class Action:
def __init__(self, executor):
self.executor = executor
def do(self, msg):
self.executor.exec(msg)
class Service:
def __init__(self, action):
self.action = action
def serve(self, msg):
self.action.do(msg)
class Controller:
def __init__(self, service):
self.service = service
def handle(self, msg):
self.service.serve(msg)
class Facade:
def __init__(self, controller):
self.controller = controller
def request(self, msg):
self.controller.handle(msg)
class Builder:
def build(self):
device = OutputDevice()
printer = Printer(device)
echo = Echo(printer)
executor = Executor(echo)
action = Action(executor)
service = Service(action)
controller = Controller(service)
facade = Facade(controller)
return facade
class Program:
def __init__(self):
self.stack = Stack()
self.formatter = Formatter()
self.builder = Builder()
self.facade = self.builder.build()
def run(self):
msg = Message(Text("hello world"))
msg = self.formatter.format(msg)
self.stack.push(msg)
self.facade.request(self.stack.top())
class Main:
@staticmethod
def start():
Program().run()
Main.start()
To embed this project on your website, copy the following code and paste it into your website's HTML: