一、状态相关类
package com.study.state
class Activity {
companion object {
val onCreateState = OnCreateState()
val onStartState = OnStartState()
val onResumeState = OnResumeState()
}
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
}
}
二、主程序调用
package com.study.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)
}
三、运行结果
四、设计模式学习总结
坚持学习了一个左右时间的设计模式,我对设计模式有了更深刻的了解。非常感谢提供学习资源的大佬。