Thank you for the explanations. The power of the abstract factory pattern can be amplified using dependency injection. Using DI you can completely decouple the client from the classes it's using (dependency inversion principle). Using the chat types is a good first step but the client still determines the type of chat it's using ("FakeChat", "SdkChat"). DI can be simple constructor dependency injection e.g. MyClass(factory: ChatFactory) {...}

--

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store