主要想着nginx:)

from abc import ABCMeta, abstractmethod


# 结构型设计模式---代理模式
class Actor:
    def __init__(self):
        self.is_busy = False

    def occupied(self):
        self.is_busy = True
        print(type(self).__name__, ' is occupied with current movie.')

    def available(self):
        self.is_busy = False
        print(type(self).__name__, ' is free for the movie.')

    def get_status(self):
        return self.is_busy


class Agent:
    def __init__(self):
        self.principal = None

    def work(self):
        self.actor = Actor()

        if self.actor.get_status():
            self.actor.occupied()
        else:
            self.actor.available()


r = Agent()
r.work()


class Payment(metaclass=ABCMeta):
    @abstractmethod
    def do_pay(self):
        pass


class Bank(Payment):
    def __init__(self):
        self.card = None
        self.account = None

    def _get_account(self):
        self.account = self.card
        return self.account

    def _has_funds(self):
        print('Bank:: Checking if Account ', self._get_account(), ' has enough funds.')
        return True

    def set_card(self, card):
        self.card = card

    def do_pay(self):
        if self._has_funds():
            print('Bank:: Paying the merchant')
            return True
        else:
            print('Bank:: Sorry, not enough funds!')


class DebitCard(Payment):
    def __init__(self):
        self.bank = Bank()

    def do_pay(self):
        card = 3234324
        self.bank.set_card(card)
        return self.bank.do_pay()


class You:
    def __init__(self):
        print('You:: Let us buy the Denim shirt')
        self.debit_card = DebitCard()
        self.is_purchased = None

    def make_payment(self):
        self.is_purchased = self.debit_card.do_pay()

    def __del__(self):
        if self.is_purchased:
            print('You:: Wow! Denim shirt is Mine :-)')
        else:
            print('You:: I should earn more :(')


you = You()
you.make_payment()
Actor  is free for the movie.
You:: Let us buy the Denim shirt
Bank:: Checking if Account  3234324  has enough funds.
Bank:: Paying the merchant
You:: Wow! Denim shirt is Mine :-)

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄