老婆陪着学设计模式之------状态模式

软件工程专业就学设计模式这些东西,状态模式本质上将是把变化的状态们单独拿出来,比如说你跟一个女孩想要发生点什么关系,那么你们之间的状态就是从普通朋友到男女朋友,然后结婚,最后生小孩。你当然想跟她做点什么啦,比如说看电影啊,一起打游戏啊,巴拉巴拉。。。但是普通朋友的时候你们是不可以这样做的,所以不同状态对应的你们之间可以做的事情是不同的。按照没学习设计模式之前的思路是

class State:
    def __init__(self):
        self.__benormalfriend=0
        self.__begirlfriend=1
        self.__bemarried=2
        self.__befather=3
        self._state=0
    def watchmovie(self):
        if self._state==0:
            print('不好意思我没时间')
        else:
            print('好呀')
    def kiss(self):
        if self._state==0:
            print('你是变态吧')
        elif self._state==1:
            print('女朋友说她有点害羞')
        else:
            print('这是一件很平常的随时都可以做的事情')

那么如果状态增加,那么每个函数都要增加一个else来表示状态。每增加一个动作,就要重新写一堆东西,真的觉得if…else…有点low。按照状态模式,我们可以抽象一个接口里面是你们之间的动作,把所有的状态单独拿出来。

class State:
    class state(metaclass=ABCMeta):
        @abstractmethod
        def kiss(self):
            pass

        @abstractmethod
        def papapa(self):
            pass

        @abstractmethod
        def careforbaby(self):
            pass

    class normalfriendstate(state):
        def kiss(self):
            print('恶心')

        def papapa(self):
            print('恶心')

        def careforbaby(self):
            print('恶心')

    class begirlfriendstate(state):
        def kiss(self):
            print('真香')

        def papapa(self):
            print('恶心心')

        def careforbaby(self):
            print('nonono')

    class bemarriedstate(state):
        def kiss(self):
            print('真香')

        def papapa(self):
            print('爽歪歪')

        def careforbaby(self):
            print('还不是时候')

    class befatherstate(state):
        def kiss(self):
            print('真香')

        def papapa(self):
            print('啊啊啊老公我爱你')

        def careforbaby(self):
            print('有责任心的好男人')
if __name__ == '__main__':
    class life(State.state):
        def __init__(self):
            self.__normalfriendstate = State.normalfriendstate()
            self.__begirlfriendstate = State.befatherstate()
            self.__bemarriedstate = State.bemarriedstate()
            self.__befatherstate = State.befatherstate()
            self._state = self.__normalfriendstate

        def kiss(self):
            self._state.kiss()

        def papapa(self):
            self._state.papapa()

        def careforbaby(self):
            self._state.careforbaby()
        def getstate(self):
            return self._state
        def setstate(self,state=State.befatherstate()):
            self._state=state


    me = life()
    me.papapa()
    me.setstate()
    me.papapa()

学习的路上不免会有些寂寞,学习设计模式的时候写个小程序自娱自乐,都是成年人,你们懂得.
我相信你也能有这么一个老婆,只要你肯复制黏贴运行一遍,加油

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值