Pythonは設計モードを実現する--07.プロトタイプパターン(Prototype Pattern)
1898 ワード
プロトタイプモードは実質的にオブジェクトをコピーし、オブジェクトを作成したり、プロパティをコピーしたりするプロセスを省くことができます.また、パフォーマンスの面から、オブジェクトをコピーすることも、オブジェクトを作成するよりも効率的です.
例えば私は3人にメールを送って、土曜日に私の家に食事に来ます.メールの内容は同じですが、受信者が違うので、プロトタイプモードで実現します.
まず、メール構造体を定義します.
オブジェクトのコピー方法はpythonの一部であり、pythonは浅いコピーと深いコピー方法を同時に提供しており、実際にはこのモードを設計する必要はありません.
例えば私は3人にメールを送って、土曜日に私の家に食事に来ます.メールの内容は同じですが、受信者が違うので、プロトタイプモードで実現します.
まず、メール構造体を定義します.
class Mail:
__receiver = '' #
__subject = '' #
__content = '' #
def __init__(self, receiver):
self.__receiver = receiver
def get_receiver(self):
return self.__receiver
def set_receiver(self, receiver):
self.__receiver = receiver
def get_subject(self):
return self.__subject
def set_subject(self, subject):
self.__subject = subject
def get_content(self):
return self.__content
def set_content(self, content):
self.__content = content
次に、招待者(メールを送信する人)を定義します.from copy import copy
# ( )
class Sender:
__receivers = () #
def __init__(self, receivers):
self.__receivers = receivers
#
def send_mail(self):
__mail = Mail('nobody') #
__mail.set_subject(' ')
__mail.set_content('Hi!Guys。 ')
for receiver in self.__receivers:
mail = copy(__mail) # python
mail.set_receiver(receiver)
print(' 【' + mail.get_receiver() + '】 【' + mail.get_subject() + '】, :【' + mail.get_content() + '】')
シーンを作成するには、次の手順に従います.if __name__ == '__main__':
sender = Sender((' ', ' ', ' '))
sender.send_mail()
実行結果: 【 】 【 】, :【Hi!Guys。 】
【 】 【 】, :【Hi!Guys。 】
【 】 【 】, :【Hi!Guys。 】
オブジェクトのコピー方法はpythonの一部であり、pythonは浅いコピーと深いコピー方法を同時に提供しており、実際にはこのモードを設計する必要はありません.