美文网首页
8.5用继承进行设计(最简单的状态模式)

8.5用继承进行设计(最简单的状态模式)

作者: 陈晓松快点跑 | 来源:发表于2024-09-29 22:52 被阅读0次

直接上代码


class Actor {
    public void act(){}
}

class HappyActor extends Actor {
    public void act() {System.out.println("HappyActor");}
}

class SadActor extends Actor {
    public void act() {System.out.println("SadActor");}
}

class Stage {
    private Actor actor = new HappyActor();
    public void change() {actor = new SadActor();}
    public void performPlay() {actor.act();}
}

public class Transmogrify {
    public static void main(String[] args) {
        Stage stage = new Stage();
        stage.performPlay();
        stage.change();
        stage.performPlay();
    }
}

在这里,Stage对象包含一个队Actor的引用,而Actor被初始化为HappyActor对象。这意味着performPlay()会产生某种特殊行为。既然引用在运行时可以与另一个不同的对象重新绑定起来,所以SadActor对象的引用可以再actor中被替代,然后由performPlay()产生的行为也随之改变。这样一来,我们在运行期间获得了动态灵活性(这也称作状态模式)。与此相反,我们不能在运行期间决定继承不同的对象,因为它要在编译期间完全确定下来

一条通用的准则是:“用继承表达行为间的差异,并用字段表达状态上的变化”。在上述例子中,两者都用到了:通过继承得到了两个不同的类,用于表达 act()方法的差异;而Stage通过运用组合使自己的状态发生变化。在这种情况下,这种状态的改变也就产生了行为的改变

相关文章

  • 2013学年总结之设计模式篇

    总结一下了解的设计模式 工厂方法和抽象工厂 这个是我们用的最多的设计模式也是最简单的设计模式,可能大家平时都用了。...

  • 大话设计模式笔记 - 简单工厂模式

    大话设计模式笔记 - 简单工厂模式 总的来说,简单工厂模式就是对封装,继承,多态的基本实现。是面向对象的基本思路。...

  • 单例设计模式

    单例设计模式是用的最多的设计模式,也是最简单的一中设计模式。下面来介绍下几种实现单例的方式,以及分析下各自的优缺点...

  • java设计模式-外观模式(Facade)

    外观模式,属于结构性模式。属于设计模式里面比较简单的设计模式,本人认为是最简单的设计模式。 所谓外观,就是我们能看...

  • State Pattern模式(状态模式)

    状态模式(State Pattern):用类来表示状态。这种类型的设计模式属于行为型模式。 介绍 意图:用类来表示...

  • 原则

    在设计模式上,抽象、继承、多态,是基本概念,设计模式的目的是建立弹性设计,以便维护和应付变化。简单说就是提高软件的...

  • day18(面向对象基础,设计模式)

    多继承补充 继承具有传递性,可以借助 类名.__mro__观察继承关系 设计模式 设计模式(Designpatte...

  • 设计模式-状态模式

    设计模式-状态模式 设计模式 状态模式的关键是区分事物内部的状态

  • 设计模式之单例模式

    单例设计模式全解析 在学习设计模式时,单例设计模式应该是学习的第一个设计模式,单例设计模式也是“公认”最简单的设计...

  • 设计模式之单例模式

    说起设计模式,java中总共有23中设计模式,我们最常见的也就属于单例设计模式了,它也是最简单的设计模式。 首先,...

网友评论

      本文标题:8.5用继承进行设计(最简单的状态模式)

      本文链接:https://www.haomeiwen.com/subject/mrbdrjtx.html