美文网首页设计模式
设计模式-状态模式

设计模式-状态模式

作者: isLJli | 来源:发表于2020-05-25 21:28 被阅读0次

状态设计模式的定义

:当一个对象的内在状态改变时允许改变其行为,这个对象看起来又像是改变了其类。
说的直白一点就是,当对象的某个状态改变了,其方法功能也相应改变不同了。 在一般的开发中某些功能会受状态的影响,某些状态下某些功能是不同。用在减少if_else的层级上。

状态设计模式举例

商城中,可以查看一件物品的状态,一个是付款的状态(未付款,已付款),一个是发货的状态(未发货,已发货)。其的状态会动态改变。

//订单的操作
interface OrderOperateStatus {

  //支付
  fun pay(){

  }

  //发货
  fun deliverGoods(){

  }

}
//待付款
open class ObligationStatus:OrderOperateStatus {

  override fun pay() {
      println("付款成功")
  }

  override fun deliverGoods() {
      println("没付款,不能发货")
  }

}
//待收货
open class WaitReceingStatus: OrderOperateStatus {

  override fun pay() {
      println("已经支付了")
  }

  override fun deliverGoods() {
      println("已经发货")
  }

}

改变不同的功能

abstract class BaseOrder {

  var mStatus:OrderOperateStatus?=null

  fun setStatus(status: OrderOperateStatus){
      this.mStatus = status
  }

}
class Order:BaseOrder(),OrderOperateStatus{

  init {
   mStatus = ObligationStatus()
  }
  //付款
  override fun pay(){
      mStatus?.pay()
      //以支付状态
      setStatus(object : PaidStatus(){}) //这时变成支付成功状态
  }

  //发货
  override fun deliverGoods(){
     mStatus?.deliverGoods()
      //待发货状态
      setStatus(object : WaitReceingStatus(){}) //这时变成发货状态
  }
}

相关文章

  • 设计模式-状态模式

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

  • 设计模式——状态模式

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

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

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

  • 设计模式——状态模式

    前言 设计模式是指导一个程序猿以更好的姿态处理一些问题,而不再像刚学编程的我们,只会使用if-else分支语句,或...

  • 设计模式--状态模式

    基本常识:策略模式与状态模式是双胞胎,在出生时才分开。 假设公司有个糖果机,1当糖果机由糖果,投入25分钱,转动曲...

  • 设计模式——状态模式

    在阎宏博士的《JAVA与模式》一书中开头是这样描述状态(State)模式的:状态模式,又称状态对象模式(Patte...

  • 设计模式《状态模式》

    引言   上一节我们说了策略模式。这一节我们讲讲策略模式的双胞胎弟弟:状态模式,这个模式大家可能不常见,也不常用,...

  • 设计模式——状态模式

    定义 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行...

  • 设计模式 - 状态模式

    模式定义 允许一个对象在其内部状态发生改变时改变它的行为。对象看起来似乎修改了它的类。 状态模式(State Pa...

  • 设计模式 ——— 状态模式

    STATE(状态) ———— 对象行为型模式 意图 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改...

网友评论

    本文标题:设计模式-状态模式

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