3分钟理解JAVA_状态设计模式

作者: MiHomes | 来源:发表于2017-03-18 15:30 被阅读191次

一.什么是设计模式?

设计模式是一套被反复使用,多数人知晓的,经过分类编目的、代码设计经验的总结。

二.什么是状态设计模式?

状态设计模式是GoF(Design Patterns: Elements of Reusable Object-Oriented

Software)一书中提出的最吸引人的模式之一,也是最有用的一种模式,游戏通常就采用

状态模式,因为游戏中的对象往往会非常频繁的改变状态.

补述:后述《设计模式》一书),由 Erich Gamma、Richard Helm、Ralph Johnson 和

John Vlissides 合著(Addison-Wesley,1995)。

这几位作者常被称为"四人组(Gang of Four)",

这本书也就被称为"四人组(或 GoF)"书。

在《设计模式》这本书的最大部分是一个目录,

该目录列举并描述了 23 种设计模式。

三.状态模式的作用?

1.状态模式的作用就是允许对象在状态改变时改变其行为.

2.用大白话来说,就如我们房间里的灯是一个接口,有两个状态,就是两个属性,灯开着

       和灯关着.那么我们可以定义为一个状态接口.再创建开灯,关灯去实现这个状态接

       口,就得到了开灯类和关灯类.

  那么,我们想开灯的时候就访问开灯接口,想关灯的时候就访问关灯接口.     

四.状态模式的组成

  环境类(Context):  定义客户感兴趣的接口。维护一个ConcreteState子类的实例,  

      这个实例定义当前状态。

抽象状态类(State): 定义一个接口以封装与Context的一个特定状态相关的行为。

具体状态类(ConcreteState): 每一子类实现一个与Context的一个状态相关的行为。

五:撸代码时,什么时候该用状态模式(State模式)呢?

1.State模式主要解决的是在开发中时常遇到的根据不同的状态需要进行不同的处理

      操作的问题。

  解决这种问题,最一般的方法是采用switch-case语句或者if-else语句进 行处理的,

  这样会造成一个问题:分支过多.

  而且如果加入一个新的状态就需要对原来的代码进行繁琐的编译。

  什么繁琐的编译呢?

  就是我想让灯有发热的功能,变成日光灯.

  如果不用状态模式,我就得重新定义灯的属性,再判断这个灯关着能不能发热啊?

  开着能不能不发热啊?等等等等

2.State模式采用了对这些不同的状态进行封装的方式处 理这类问题,

  当状态改变的时候进行处理然后再切换到另一种状态,

  也就是说把状态的切换责任交给了具体的状态类去负责.

  就比如我想开灯的时候直接调用开灯这个状态接口,想关灯就直接调用关灯这个接口.

  想发热呢?直接调用发热这个接口.        

六:State模式的优点?

通过上述举例,相信大部分同学可以理解这个模式的优点了,能将复杂的逻辑判断简

    化.我就直接说缺点吧      

七.State模式的缺点?

定义了太多的系统类,和对象的个数.这是大多数设计模式的缺点.如果使用不当讲导

    致程序结构和代码的混乱

当然这句话等于白说啊,我if else使用不当代码也会混乱...

末尾:移动互联&人力资源交流群,可加微信zy666128入群交流。


image.png

相关文章

  • 3分钟理解JAVA_状态设计模式

    一.什么是设计模式? 设计模式是一套被反复使用,多数人知晓的,经过分类编目的、代码设计经验的总结。 二.什么是状态...

  • 设计模式-状态模式

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

  • 状态设计模式

    什么是状态设计模式 类图如下: 这个可以理解为对象行为随着状态改变的一个设计模式 如,随着四季变化,树的行为也跟着...

  • Android MVI 设计模式(2)

    为了更好地理解 MVI 设计模式,需要拿出一些时间来说一说什么是状态,以及我们如何设计状态。因为在 MVI 设计模...

  • Java_设计模式之享元模式

    1、关于享元模式 享元模式有点类似于单例模式,都是只生成一个对象被共享使用。享元模式主要目的就是让多个对象实现共享...

  • 设计模式-状态设计模式

    1.定义 对于某个操作,由于其状态的不同,表现出的行为会不同(如遥控器进行音量增加的操作,在电视是开机状态下是可以...

  • 理解状态模式

    概念理解 状态模式是对象根据自己的状态改变自己的行为。不同的状态,做出的行为是不同的。这是一种行为型的模式,对象的...

  • 设计模式——状态模式

    设计模式——状态模式 在状态模式中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 优点: 减少...

  • 读书笔记 |《大话设计模式》之设计模式趣谈

    PART1、 前言 TOPIC: 23种设计模式的趣谈 收获 初步理解各种设计模式 通过设计模式理解封装变化、多态...

  • 学好设计模式防被祭天:状态模式

    为了防止被“杀”了祭天,学点设计模式,并总结下还是有必要的。 一:理解 状态模式从另一个角度思考状态转移问题。 原...

网友评论

    本文标题:3分钟理解JAVA_状态设计模式

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