python设计模式状态模式

class State:
    def __init__(self,name):
        self.__name=name
    def getStateName(self):
        return self.__name
    def behavior(self,water):
        pass
class SolidState(State):
    def __init__(self,name):
        super().__init__(name)
    def behavior(self,water):
        print("cold",water.getTemperature())
class LiquidState(State):
    def __init__(self,name):
        super().__init__(name)
    def behavior(self,water):
        print("liquid",water.getTemperature())
class Gas(State):
    def __init__(self,name):
        super().__init__(name)
    def behavior(self,water):
        print("gas",water.getTemperature())
class Water:
    def __init__(self,state):
        self.__temperature=25
        self.__state=state
    def setState(self,state):
        self.__state=state
    def changeState(self,state):
        if(self.__state):
            print("状态变更",self.__state.getStateName(),"变为",state.getStateName())
        else:
            print("初始化",state.getStateName())
        self.__state=state
    def getTemperature(self):
        return self.__temperature
    def setTemperature(self,temperature):
        self.__temperature=temperature
        if(self.__temperature<=0):
            self.changeState(SolidState("solid"))
        elif(self.__temperature<=100 and self.__temperature>0):
            self.changeState(LiquidState("liquid"))
        elif(self.__temperature>100):
            self.changeState(Gas("gas"))
    def addTemperature(self,temp):
        self.setTemperature(self.__temperature+temp)
    def reduceTemperature(self,temp):
        self.setTemperature(self.__temperature-temp)
    def behavior(self):
        self.__state.behavior(self)

t=Water(LiquidState("liquid"))
t.behavior()
t.addTemperature(80)
t.behavior()

    原文作者:为不为
    原文地址: https://blog.csdn.net/u011747152/article/details/85701257
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞