Strategy Pattern: Design pattern in Software design

Member-only story

Understanding the Strategy Pattern in Software Design

Gajendra Singh Rathore
4 min readJun 10, 2024

You’re about to embark on a wild ride through the world of the Strategy Pattern — expect algorithmic acrobatics, code capers, and a dash of Kotlin comedy. Buckle up, folks, we’re going to make software design patterns fun (or at least try)!

I was rewriting a payment module (taking care of Technical Debt) in a project and reading about a couple of design patters and their usages and recommendations. One of my concern was to write it in a way that addition of a new payment gateway or removal of existing one would be as easy as possible. Although there are a lot of ways to do it, I picked one and we’ll discuss its usages here.

Introduction

In the realm of software design, the Strategy Pattern is a significant design pattern that is used to create an interchangeable family of algorithms from which the required process can be chosen at run time. This blog post seeks to provide an in-depth understanding of the Strategy Pattern with Kotlin code examples, its benefits, usage, and how it influences software architecture.

What is the Strategy Pattern?

The Strategy Pattern, also known as the Policy Pattern, is a behavioral software design pattern that enables selecting an algorithm at runtime. Instead of implementing a single algorithm directly, code receives run-time instructions as to which in a family of algorithms to use. In essence, it defines a family of algorithms, encapsulates each one, and makes them interchangeable, enabling the algorithm to vary independently from clients that use it.

For example, consider a simple strategy pattern in Kotlin:

interface PaymentGateway {
fun processPayment(amount: Double): String
}
class Paypal : PaymentGateway {
override fun processPayment(amount: Double): String {
// Implementation for processing payment through PayPal
return "Payment of $amount processed through PayPal"
}
}

class Stripe : PaymentGateway {…

Create an account to read the full story.

The author made this story available to Medium members only.
If you’re new to Medium, create a new account to read this story on us.

Or, continue in mobile web

Already have an account? Sign in

Gajendra Singh Rathore
Gajendra Singh Rathore

No responses yet

Write a response