23_ mode état

1. Classes liées au statut

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
    }
}

Deuxièmement, l'appel du programme 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)
}

Trois, résultats en cours

Quatre, résumé de l'apprentissage des modèles de conception

Après avoir persisté dans l'apprentissage d'un modèle de conception sensible au temps, j'ai une compréhension plus profonde des modèles de conception. Merci beaucoup d'avoir fourni des ressources d'apprentissage.

Instruit par M. Ma Yingjun de l'Université Tsinghua - Explication détaillée de 23 modèles de conception Java

Modèle de conception Java Shang Silicon Valley (illustration + analyse du code source du framework)

Le modèle de conception Java parle du mode débogage + analyse de la mémoire

Je suppose que tu aimes

Origine blog.csdn.net/Duckdan/article/details/111988402
conseillé
Classement