DEV Community

Discussion on: Gang of Four Patterns in Kotlin

Collapse
 
mariofusco profile image
Mario Fusco

Great post, I just have one note: for what regards the Decorator example, you're using extension methods, which is a very desirable feature of Kotlin and other languages like C#. That's nice, but the point of the corresponding example in my Java 8 implementation was a bit different and probably more fundamental. The Decorator pattern as demonstrated in GoF is just a very convoluted way to achieve functions composition. Using functions composition, which is not a specific language feature, but a corner stone of functional programming, and then available in any language with a minimal functional support including Java 8, you can achieve the same result in a more elegant way. Conversely what you did is reimplementing the Decorator pattern literally and in its original form, only in a more concise way using Kotlin's better expressiveness. Both solutions are valid, but still I believe that the one using function composition is more functional-ish, general and possibly even easier to read and to implement.

Collapse
 
lovis profile image
Lovis

Hey Mario, first of all: thanks for your kind words!
It's definitely true that function composition would be the better solution here. I used extensions because it's "pure" Kotlin. I didn't want to copy your examples and solutions, either. Thought that would be boring :-)

Collapse
 
marioariasc profile image
Mario Arias

My library (funKTionale) implements function composition for Kotlin (among other goodies) github.com/MarioAriasC/funKTionale...

Currently working on a blog post series covering many features

Collapse
 
qwertukg profile image
Daniil Rakhmatulin

its hard to read infix fun in this case

Collapse
 
lovis profile image
Lovis

Really looking forward to your posts!

Thread Thread
 
lovis profile image
Lovis • Edited

Here it is, if anyone is interested and drops by:
hackernoon.com/funktionale-functio...