Strategy mode: A series of algorithms can be defined to encapsulate them one by one.
For example, a game has different recharge rates for different levels of members, Diamond members 1 yuan = 15 coins, Platinum members 1 yuan = 13 coins, and Gold members 1 yuan = 10 coins.This allows three algorithms of the three members to be encapsulated in separate implementation classes, and then three implementation classes implement the same interface.
Sample code:
1. Create a common interface: member policy interface and recharge method, passing in the value and recharge amount of the remaining currency
public interface MemberStrategy { public int recharge(int num1, int num2); }
2. Create three member implementation classes and override the recharge method
The recharging algorithm for diamond members, amount *15 +remaining currency = recharged currency
public class DiamondRecharge implements MemberStrategy{ @Override public int recharge(int num, int money) { return money*15 + num; } }
The recharging algorithm for platinum members, amount *13 +remaining currency = recharged currency
public class PlatinumRecharge implements MemberStrategy{ @Override public int recharge(int num, int money) { return money*13 + num; } }
The recharging algorithm for gold members, amount *10 +remaining currency = recharged currency
public class GoldRecharge implements MemberStrategy{ @Override public int recharge(int num, int money) { return money*10 + num; } }
3. Categories for new member recharge
public class MemberRecharge { private MemberStrategy memberStrategy ; public MemberRecharge(MemberStrategy memberStrategy ){ this.memberStrategy = memberStrategy ; } public int executeRecharge(int num, int money){ return memberStrategy .recharge(num, money); } }
4. New Test Class
public class TestStrategy { public static void main(String[] args) { MemberRecharge memberRecharge = new MemberRecharge(new DiamondRecharge()); System.out.println("The amount of money remaining after the diamond member's first recharge of 1 yuan:"+memberRecharge.recharge(0,1)); MemberRecharge memberRecharge = new MemberRecharge(new PlatinumRecharge()); System.out.println("The amount of money remaining after the first recharge of 1 yuan for platinum members:"+memberRecharge.recharge(0,1)); MemberRecharge memberRecharge = new MemberRecharge(new GoldRecharge()); System.out.println("The amount of money remaining after the first recharge of 1 yuan for gold members:"+memberRecharge.recharge(0,1)); } }
The policy mode has good extensibility and belongs to the behavior mode. For example, if a new silver member is added, only a new class implementing the MemberStrategy interface is needed.