java策略模式和简单工厂方法怎么实现
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,本篇内容主要讲解"java策略模式和简单工厂方法怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java策略模式和简单工厂方法怎么实现"吧!策略模式
千家信息网最后更新 2025年01月17日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安全错误
数据库的锁怎样保障安全
数据库对象概念
湖北哪里有软件开发方案
软件开发目标量化
软件开发的六大步骤是什么
网络安全ppt视频讲解
分布式数据库顶级会议
我热爱计算机网络技术
网络安全思政课观后感200字
浏览器未连接上服务器是什么问题
Linux服务器搭建和管理
饥荒在别人的服务器怎么刷物品
wow部落服务器推荐
linux 初始化数据库
国家数据库电话
软件开发公司市场
h3c 认证服务器
服务器 标识
湖南创无限移动互联网科技
学校网络安全领导组成立情况
.net用什么软件开发
日产逍客音乐找不到服务器
肥东企业网络技术咨询哪家好
数据库5种关系代数运算
ssd 软件开发
数据库怎么对比
软件开发的工作好找吗
得到软件开发工资
朝阳服务器回收厂家
软件开发陪聊师
研究生论文查文献用什么数据库