23种设计模式介绍(Python示例讲解)(35)
2023-04-30 来源:飞速影视
代码讲解:
在上面的实现中,Subject 是主题类,Observer 是观察者类,ConcreteSubject 是具体主题类,ConcreteObserver 是具体观察者类。当主题状态发生变化时,它会通过 notify 方法通知所有观察者。观察者可以通过 update 方法接收到主题的状态变化,并进行相应的处理。在上面的例子中,我们创建了一个 ConcreteSubject 对象,然后创建了两个 ConcreteObserver 对象,并将它们添加到主题的观察者列表中。接着,我们改变了主题的状态两次,第一次时两个观察者都收到了通知,第二次时只有一个观察者收到了通知。最后,我们从主题的观察者列表中移除了一个观察者,并再次改变了主题的状态,这时只有一个观察者收到了通知。
8、状态模式(State)
状态模式(State)是一种行为型设计模式,它允许对象在不同的内部状态下改变其行为。在状态模式中,一个对象可以有多个状态,每个状态都对应着一组不同的行为。对象根据自身的状态,选择不同的行为。这种模式将状态抽象成独立的类,使得状态之间可以相互切换,而不影响对象的整体行为。
状态模式由三个核心组件构成:
环境(Context):表示当前对象的状态,它维护一个对抽象状态类的引用,以便能够切换状态。抽象状态(State):定义一个接口,用于封装与环境相关的行为。具体状态(ConcreteState):实现抽象状态接口,实现与环境相关的行为。
在状态模式中,当对象的状态发生变化时,它会将状态的处理委托给当前状态对象。状态对象会负责处理相关的操作,并且在必要时会将环境的状态切换到新的状态。
状态模式的优缺点包括:
将状态转换的逻辑封装在状态类中,使得状态之间的切换变得简单明了。
增加新的状态非常容易,只需要增加新的状态类即可。可以消除大量的条件分支语句,使得代码更加清晰和易于维护。状态模式的缺点是,由于需要创建多个状态类,因此会增加系统的复杂度。另外,状态之间的转换也需要仔细设计,否则可能会导致系统的不稳定性。
下面是一个简单的使用 Python 实现状态模式的例子。
假设我们有一个电梯,它可以处于三种状态之一:开门状态、关门状态和运行状态。在每种状态下,电梯的行为不同。我们可以使用状态模式来管理电梯的不同状态,从而使电梯的行为更加清晰和易于维护。
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号