java策略模式和简单工厂方法怎么实现
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,本篇内容主要讲解"java策略模式和简单工厂方法怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java策略模式和简单工厂方法怎么实现"吧!策略模式
千家信息网最后更新 2024年11月11日java策略模式和简单工厂方法怎么实现
本篇内容主要讲解"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 DictionaryMemberDictionary = 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策略模式和简单工厂方法怎么实现"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
会员
方法
积分
工厂
模式
策略
普通
逻辑
钻石
黄金
白银
活动
上下
上下文
免费送货
内容
算法
金额
优惠
学习
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
企业网络安全问题及解决方案
网络安全手抄容幼儿园
数据库的计算公式
河南红苹果网络技术服务怎么样
确保网络安全可控
昆明学软件开发的职高学校哪家好
网络安全工作持续推进
海鸣互联网科技销售
如何选择数据库版本
vb中数据库连接
服务器运维管理软件有哪些
战地3服务器网址
数据库角色成员身份
DDos网络安全对抗
怎么用云服务器当无盘服务器
中国联机服务器推荐
转轴设计软件开发
5g网络安全教程
软件开发方法的不同点
政策风险分析网络安全
php循环读取数据库
淘宝网络技术有限公司
将数据库表显示在jsp页面
继续教育公需课网络安全考试
resset金融研究数据库
营销管理书第15版云服务器
湘潭大学计算机与网络安全
智能共享雨伞软件开发
如何用手机做服务器共享流量
网络安全圈未来发展