java策略模式和简单工厂方法怎么实现
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容主要讲解"java策略模式和简单工厂方法怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java策略模式和简单工厂方法怎么实现"吧!策略模式
千家信息网最后更新 2025年11月07日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 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策略模式和简单工厂方法怎么实现"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
会员
方法
积分
工厂
模式
策略
普通
逻辑
钻石
黄金
白银
活动
上下
上下文
免费送货
内容
算法
金额
优惠
学习
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
安徽芜湖软件开发培训选哪家
云数据库的安全问题
es怎么查询数据库
网络安全和信息化工作任务清单
网络安全计费系统的发展
迅游服务器ip
腾讯软件开发师证书
tornado中使用数据库
崇明区多功能软件开发设计标准
中国网络安全学校排名
刘倩南 网络安全
文件下载时服务器替换文件
榆次展厅大屏导航软件开发公司
网络安全侵权事件导致舆论
护苗网络安全活动总结
铁路职工网络安全意识
国泰安数据库字段
战地一无法连接到多人服务器
十堰市校园网络安全
核心期刊目录遴选数据库
数据库更新信息
python数据库被锁住
java软件开发怎么创业
数据库list作用
如何维护网络安全1800字
重庆亮渝空间网络技术有限公司
淘宝抢购东西显示服务器繁忙
软件开发pd
软件开发过程中的模型
华三服务器登录失败未授权