Strategy pattern
Key 2: Changing the behavior of an algorithm.
Sometimes, the same piece of code must have different behavior for different invocation by different clients. For example, time-conversion for all countries must handle daylight-savings time in some countries and change their strategy in these cases. The main use is to switch the implementation. In this pattern, algorithm's behavior is selected on runtime. As Python is a dynamic language, it is trivial to assign functions to variables and change them on runtime. Similar to the following code segment, there are two implementations to calculate tax, namely, tax_simple
, and tax_actual
. For the following code snippet, tax_cal
references clients that are used. The implementation can be changed by changing reference to the implementing function:
TAX_PERCENT = .12 def tax_simple(billamount): return billamount * TAX_PERCENT def tax_actual(billamount): if billamount < 500: return billamount * (TAX_PERCENT//2) ...