Java Design Mode-Policy Mode

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.

Posted by Draicone on Wed, 26 Feb 2020 08:41:23 -0800