本篇内容主要讲解“java策略模式和简单工厂方法怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java策略模式和简单工厂方法怎么实现”吧!

策略模式由前端触发决定使用某一组算法或逻辑,每一组算法或逻辑不相同,互相不干扰。最后交由一个上下文具体去执行,并可以增加一定公有逻辑。
比如某电商平台搞活动:
普通会员:满100减10块
白银会员:满100减15块 送积分
黄金会员:满100减18块 送积分 参与抽奖
钻石会员:满100减20块 送积分 参与抽奖 免费送货
由会员级别决定执行哪一个活动,建一个枚举:
public enum MemberLevel
{
///
/// 普通会员
///
Normal,
///
/// 白银会员
///
Silver,
///
/// 黄金会员
///
Gold,
///
/// 钻石会员
///
Diamond
}一个用户类:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public MemberLevel Level { get; set; }
}我们有1个会员基类,定义一个优惠的方法:
public abstract class BaseMember
{
public abstract void Preferential(decimal customMoney);
}4种会员分别实现BaseMember:
////// 普通会员 /// public class NormalUser : BaseMember { public NormalUser() { Console.WriteLine("普通会员"); } public override void Preferential(decimal customMoney) { Console.WriteLine("满100减10块"); } } ////// 白银会员 /// public class SilverUser: BaseMember { public SilverUser() { Console.WriteLine("白银会员"); } public override void Preferential(decimal customMoney) { Console.WriteLine("满100减15块"); Console.WriteLine("送积分100"); } } ////// 黄金会员 /// public class GoldUser: BaseMember { public GoldUser() { Console.WriteLine("黄金会员"); } public override void Preferential(decimal customMoney) { //if (customMoney > 100) //{ Console.WriteLine("满100减18块"); Console.WriteLine("送积分100"); Console.WriteLine("参与抽奖"); //} } } ////// 钻石会员 /// public class DiamondUser : BaseMember { public DiamondUser() { Console.WriteLine("钻石会员"); } public override void Preferential(decimal customMoney) { //if (customMoney > 100) //{ Console.WriteLine("满100减20块"); Console.WriteLine("送积分100"); Console.WriteLine("参与抽奖"); Console.WriteLine("免费送货"); //} } }
我们还需要一个简单工厂:(这里可以从配置文件去获取,通过反射来实例化)
public class SimpleFactory
{
public static BaseMember CreateMember(MemberLevel memberLevel)
{
return MemberLevelConfig.MemberDictionary[memberLevel];
}
}public static class MemberLevelConfig
{
public static Dictionary MemberDictionary = new Dictionary()
{
{MemberLevel.Normal,new NormalUser() },
{MemberLevel.Silver,new SilverUser() },
{MemberLevel.Gold,new GoldUser() },
{MemberLevel.Diamond,new DiamondUser() },
};
} 最后我们还需要一个上下文:增加一个公有的逻辑如果金额不够100则无优惠
public class Context
{
private BaseMember _baseMember;
private decimal _customMoney;
public Context(BaseMember baseMember,decimal customMoney)
{
_baseMember = baseMember;
_customMoney = customMoney;
}
public void Preferential()
{
if (_customMoney < 100)
{
Console.WriteLine("金额未满100,不能参加活动");
}
else
{
_baseMember.Preferential(_customMoney);
}
}
}现在我们的Main方法:
static void Main(string[] args)
{
User user = new User();
user.Level = MemberLevel.Silver;
var member = SimpleFactory.SimpleFactory.CreateMember(user.Level);
Console.WriteLine("********************");
Context.Context context = new Context.Context(member, 180);
context.Preferential();
Console.ReadKey();
}到此,相信大家对“java策略模式和简单工厂方法怎么实现”有了更深的了解,不妨来实际操作一番吧!这里是创新互联建站网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。