Proxy and State in Python

Proxy:

class Implementation(object):
    def __init__(self):
        pass

    def f(self):
        print "In implementation function F."

    def g(self):
        print "In implementation function G."

    def h(self):
        print "In implementation function H."


class Proxy(object):
    def __init__(self):
        self.__imp = Implementation()

    def __getattr__(self, name):
        return getattr(self.__imp, name)

def main():
    proxy = Proxy()

    proxy.f()
    proxy.g()
    proxy.h()

State:

class State(object):
    def __init__(self, imp):
        self.__imp__ = imp

    def changeState(self, imp):
        self.__imp__ = imp

    def __getattr__(self, name):
        return getattr(self.__imp__, name)

class Implementation(object):
    def __init__(self):
        pass

    def f(self):
        print "In class Implementation function F."

    def g(self):
        print "In class Implementation function G."

    def h(self):
        print "In class Implementation function H."

class Implementation2(object):
    def __init__(self):
        pass

    def f(self):
        print "In class Implementation2 function F."

    def g(self):
        print "In class Implementation2 function G."

    def h(self):
        print "In class Implementation2 function H."

def main():
    state = State(Implementation())
    state.f()
    state.g()
    state.h()

    state.changeState(Implementation2())
    state.f()
    state.g()
    state.h()

if __name__ == '__main__':
    main()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值