public interface MemberStrategy {
public double calcPrice(double price,int n);
}
public class PrimaryMemberStrategy implements MemberStrategy{
@Override
public double calcPrice(double price, int n) {
return price*n;
}
}
public class IntermediateMemberStrategy implements MemberStrategy{
@Override
public double calcPrice(double price, int n) {
return price*n*0.9;
}
}
public class AdvanceMemberStrategy implements MemberStrategy{
@Override
public double calcPrice(double price, int n) {
return price*n*0.8;
}
}
public class MemberContext {
private MemberStrategy memberStrategy;
public MemberContext(MemberStrategy memberStrategy){
this.memberStrategy=memberStrategy;
}
public double qoutePrice(double goodsPrice,int n){
return memberStrategy.calcPrice(goodsPrice,n);
}
}
public class Test {
public static void main(String[] args) {
MemberStrategy primaryMemberStrategy=new PrimaryMemberStrategy();
MemberStrategy intermediateMemberStrategy=new IntermediateMemberStrategy();
MemberStrategy advanceMemberStrategy=new AdvanceMemberStrategy();
MemberContext primaryContext=new MemberContext(primaryMemberStrategy);
MemberContext intermediateContext=new MemberContext(intermediateMemberStrategy);
MemberContext advanceContext=new MemberContext(advanceMemberStrategy);
System.out.println(primaryContext.qoutePrice(300,1));
System.out.println(intermediateContext.qoutePrice(300,1));
System.out.println(advanceContext.qoutePrice(300,1));
}
}