设计模式之策略模式

1.设计原则

 1.策略模式的设计原则是吧一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口,然后再具体的类中包(上下文对象:context)含这个对象的实例,这样在实例运行中就可以随意调用实现了这个接口的类的行为。

2.主要实现了在环境对象中,引用了策略对象的抽象方法,在运行时,传递具体策略对象,以达到动态调用不同算法的目的

2.策略模式中的对象

(1) 环境对象:该类中实现了对抽象策略中的定义的接口或者抽象类的引用

 (2)   抽象策略对象:将需要的公共方法,在抽象类中进行声明

 (3)具体策略对象:封装了实现同功能的不同算法

3.举例

 商品促销活动中的各种打折算法。

1、8折优惠

 2、200以上7.5折策略

 3、满1000减200 




4、设计原则

1.“开-闭”原则

在策略模式中,可以在客户端程序运行的时候,动态的设置需要的具体策略,而不需要修改算法中的内部结构,每一个算法作为一个独立的实现,更容易扩展。

2.单一职责原则

在策略模式中,每一种策略都是使用的单独的一个类来实现的,因此各种策略之间没有任何的干扰。这种实现,有利于降低模块间的耦合性,能够有效防止一个策略的更改对于其余策略造成影响。

5、相关的设计模式

1.抽象工厂模式:在抽象工厂模式中,可以切换具体具体的工厂或者产品,策略模式中是切换算法

2.状态模式:二者都是采用对象组合的方式,但是状态模式切换的是状态,当状态发生改变时(拥有的状态,前期已经有所规定,而且主要解决系统中判断分支过多的问题),一定会切换委托对象的类实例。而策略模式切换的是算法,算法的相互替换,是由外部环境根据具体情况进行的切换(只需切换的算法,继承规范的策略接口),就可以无限制的扩展和切换

3.模板方式模式:(将已经确定的方法,在父类中是实现,未确定的方法,作为抽象方法,交给子类去实现)
6、使用场合

1.多个类的表现形式不同,需要在运行时动态选择具体要执行的行为的时候

2.当需要在不同的情况下使用不同的策略(比如金额满多少钱,实现某种优惠)

3.当一个类中出现了多种行为,而且在一个操作中使用多个条件分枝判断使用多种行为,也可以使用策略模式将各个条件分支的动作植入到具体策略中实现

7.java中设计的策略模式

ThreadPoolExecutor.


在ThreadPoolExecutor构造函数中

对应的四个策略


在threadPoolExecutor的构造函数中,需要传入一个handler ,此处就涉及到策略模式,根据具体需要传入具体的策略处理方式,来接受对于线程池对拒绝任务的处理

线程池具体使用方法

8.android中涉及的策略模式

android 中的setAdapter(adapter);此处就使用到了策略模式,根据自身需要,传入具体的adapter

eg:

1.ListView 继承于AbListView ,在AbListView中,声明了一个ListAdapter(1.接口形式,继承了adapter接口2.所有自定义的adaper都最终实现了listadapter)变量

在此中

1、listview相当于上下文,通过setAdapter方法,动态绑定具体的策略

2、ListAdapter(baseAdapter)相当于抽象策略方法,我们具体的实现的adapter为具体的策略方法

3、最后通过setAdapter(adapter),来动态改变策略




资源下载链接为: https://pan.quark.cn/s/dab15056c6a5 用户画像(User Profile)是大数据领域关键概念,是基于用户多维度信息如行为数据、偏好、习惯等构建的虚拟代表。它是数据分析重要工具,能助企业深度理解用户,实现精准营销、个性化推荐及服务优化。其源码涵盖以下内容:一是数据收集,需大量数据支撑,常借助Flume、Kafka等日志收集系统,实时或批量收集用户浏览记录、购买行为、搜索关键词等数据;二是数据处理与清洗,因数据源杂乱,需用Hadoop、Spark等大数据处理框架预处理,去除噪声数据,统一格式,保障数据质量;三是特征工程,为构建用户画像关键,要挑选有意义特征,像用户年龄、性别、消费频率等,且对特征编码、标准化、归一化;四是用户聚类,用K-means、DBSCAN等算法将用户分组,找出行为模式相似用户群体;五是用户建模,借助决策树、随机森林、神经网络等机器学习模型对用户建模,预测其行为或需求;六是用户画像生成,把分析结果转为可视化用户标签,如“高消费能力”、“活跃用户”等,方便业务人员理解。 其说明文档包含:一是项目背景与目标,阐述构建用户画像原因及期望效果;二是技术选型,说明选用特定大数据处理工具和技术栈的理由;三是数据架构,描述数据来源、存储方式(如HDFS、数据库)及数据流图等;四是实现流程,详述各步骤操作方法和逻辑,含代码解释及关键函数功能;五是模型评估,介绍度量用户画像准确性和有效性方式,像准确率、召回率、F1分数等指标;六是应用场景,列举用户画像在个性化推荐、广告定向、客户服务等实际业务中的应用;七是注意事项,分享开发中遇问题、解决方案及优化建议;八是结果展示,以图表、报表等形式直观呈现用户画像成果,展现用户特征和行为模式。 该压缩包资源对学习实践用户画像技术价值大,既可助人深入理解构建过程,又能通过源码洞察大数据处
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值