# Software Design Pattern By Example: Strategy

## Explain Strategy Design Pattern in an easy-to-understand example

*(I know the majority of this blog’s readers are testers or automation/DevOps engineers. This one is about software design.)*

Table of Contents:· The Problem: GCD

· Preparation

∘ Implement individual algorithms

· Sub-optimal Design

· Strategy Pattern

· Apply Strategy pattern again

· Exercise

∘ A quick introduction to Object-Oriented in C++

# The Problem: GCD

In mathematics, the greatest common divisor (GCD, *also called the greatest common factor*) of two or more integers *(not all zero)*, is the largest positive integer that divides each of the integers. For example, the gcd of 8 and 12 is 4, the gcd of 6, 8, 12 is 2.

In this exercise, you implement at least two algorithms to solve the GCD of two integers `x `

and `y`

. The program will decide the use of algorithms dynamically based on the multiple of `x, y`

. For example, If `x * y > 100000`

using algorithm `A`

, otherwise `B`

. The decision logic does not matter, as long as the program demonstrates it can ‘*choose’** *a different algorithm.

# Preparation

As always, start simple and make small progress.

**Implement 2+ GCD algorithms.**

It is OK to start with procedural style (i.e. non-OO design).**Encapsulate implementations in classes**

Wrap your implementations…