Reader small image

You're reading from  Kotlin Design Patterns and Best Practices - Third Edition

Product typeBook
Published inApr 2024
PublisherPackt
ISBN-139781805127765
Edition3rd Edition
Right arrow
Author (1)
Alexey Soshin
Alexey Soshin
author image
Alexey Soshin

Alexey Soshin is a software architect with 18 years of experience in the industry. He started exploring Kotlin when Kotlin was still in beta, and since then has been a big enthusiast of the language. He's a conference speaker, published writer, and the author of a video course titled Pragmatic System Design
Read more about Alexey Soshin

Right arrow

State

You can think of the State design pattern as a more opinionated version of the Strategy pattern we discussed earlier in this chapter. However, there’s a crucial difference: while the Strategy pattern is typically changed from the outside by the client, the state can change internally based solely on the input it receives.

Consider this dialogue a client has with the Strategy pattern:

Client: “Here’s a new thing to do, start doing it from now on.”

Strategy: “OK, no problem.”

Client: “What I like about you is that you never argue with me.”

Now, compare it with this dialogue:

Client: “Here’s some new input I got for you.”

State: “Oh, I don’t know. Maybe I’ll start doing something differently. Maybe not.”

The client should also be prepared for the state to possibly reject some of its inputs:

Client: “Here’s something for you to...

lock icon
The rest of the page is locked
Previous PageNext Page
You have been reading a chapter from
Kotlin Design Patterns and Best Practices - Third Edition
Published in: Apr 2024Publisher: PacktISBN-13: 9781805127765

Author (1)

author image
Alexey Soshin

Alexey Soshin is a software architect with 18 years of experience in the industry. He started exploring Kotlin when Kotlin was still in beta, and since then has been a big enthusiast of the language. He's a conference speaker, published writer, and the author of a video course titled Pragmatic System Design
Read more about Alexey Soshin