このファサードコードは良いアイデアのように見えますか、それともデザインに本質的に欠陥があるものがありますか?さらに重要なことに、このコードで将来遭遇する可能性のある問題はありますか?どんな助けでも大歓迎です。
これを構築して、ファサードとしてcc番号などを受け入れるPaymentクラスを作成し、実装としてPayPalクラスを使用して、カードに請求してその情報を保存できるようにしようとしています。
class MyFacadeClass(models.Model):
account = models.ForeignKey('Account') # Account omitted from example for brevity.
implementation = CharField(max_length=255, choices=IMPL_CHOICES) # IMPL_CHOICES omitted for brevity
some_field = models.CharField(max_length=255)
def __init__(self, *args, **kwargs):
super(MyFacadeClass, self).__init__(*args, **kwargs)
if self.implementation == 'PAYPAL':
from somewhere import MyPayPalImplementationModelClass
self.impl = MyPayPalImplementationModelClass(my_facade_instance=self, some_field=self.some_field, account=self.account)
# Then MyPayPalImplementationModelClass does stuff with PayPal and has its own attributes such as ack, and datetime and fee_amount behind the scenes.
def save(self, force_insert=False, force_update=False)
if self.impl.is_valid():
self.impl.save()
super(MyFacadeClass, self).save(force_insert, force_update)