23_modo de estado

1. Clases relacionadas con el estado

package com.study.state


class Activity {
    
    
    /**
     * 各个状态
     */
    companion object {
    
    
        val onCreateState = OnCreateState()
        val onStartState = OnStartState()
        val onResumeState = OnResumeState()
    }

    //当前activity状态
    var activityState: ActivityState =
        OnCreateState()
        set(value) {
    
    
            field = value
            activityState.activity = this
        }


    fun onCreate() {
    
    
        activityState?.onCreate()
    }


    fun onStart() {
    
    
        activityState?.onStart()
    }


    fun onResume() {
    
    
        activityState?.onResume()
    }
}
package com.study.state

abstract class ActivityState {
    
    

     var activity: Activity? = null

    abstract fun onCreate()
    abstract fun onStart()
    abstract fun onResume()
}
package com.study.state


class OnCreateState : ActivityState() {
    
    
    override fun onCreate() {
    
    
        println("当前Activity状态onCreate")
    }

    override fun onStart() {
    
    
        activity?.activityState = Activity.onStartState
    }

    override fun onResume() {
    
    
        activity?.activityState = Activity.onResumeState
    }
}
package com.study.state

class OnResumeState: ActivityState() {
    
    
    override fun onCreate() {
    
    
        activity?.activityState = Activity.onCreateState
    }

    override fun onStart() {
    
    
        activity?.activityState = Activity.onStartState
    }

    override fun onResume() {
    
    
        println("当前Activity状态onResume")
    }
}
package com.study.state

class OnStartState: ActivityState() {
    
    
    override fun onCreate() {
    
    
        activity?.activityState = Activity.onCreateState
    }

    override fun onStart() {
    
    
        println("当前Activity状态onStart")
    }

    override fun onResume() {
    
    
        activity?.activityState = Activity.onResumeState
    }
}

En segundo lugar, la llamada del programa principal

package com.study.state

/**
 * 定义和类型
   定义:允许一个对象在其内部状态改变时,改变他的行为
   类型:行为型

   适用场景
   一个对象存在多种状态(不同状态下行为不同),且状态可相互切换

   优点
   将不同的状态隔离
   把各种状态的转换逻辑,分布到State的子类中,减少相互间依赖

   缺点
   状态多的业务场景导致类数目增加,系统变复杂
 */
fun main() {
    
    
    val activity = Activity()
    activity.activityState = OnCreateState()

    println("当前状态:" + activity.activityState?.javaClass?.simpleName)

    //切换状态
    activity.onStart();
    println("当前状态:" + activity.activityState?.javaClass?.simpleName)

    activity.onResume()
    println("当前状态:" + activity.activityState?.javaClass?.simpleName)
}

Tres, resultados en ejecución

Cuatro, resumen de aprendizaje de patrones de diseño

Después de persistir en aprender un patrón de diseño sensible al tiempo, tengo una comprensión más profunda de los patrones de diseño. Muchas gracias por proporcionar recursos de aprendizaje.

Instruido por el Sr. Ma Yingjun de la Universidad de Tsinghua - Explicación detallada de 23 patrones de diseño de Java

Patrón de diseño de Java de Shang Silicon Valley (ilustración + análisis del código fuente del marco)

El patrón de diseño de Java habla sobre el modo de depuración + análisis de memoria

Supongo que te gusta

Origin blog.csdn.net/Duckdan/article/details/111988402
Recomendado
Clasificación