java -设计模式-策略模式

简介:

策略模式其实就是对各种行为算法的包装,各种不同的行为的算法的分离。属于对象的行为模式。

Strategy Pattern Class Diagram

策略模式类图,比较简单,没有自己画,是窃取别人的。

策略模式角色划分

Strategy 策略接口或者(抽象策略类),定义策略执行接口

ConcreteStrategy 具体策略类

Context 上下文类,持有具体策略类的实例,并负责调用相关的算法


Demo:使用场景,加入有一个简单的爬虫系统,每个网站都会有单独的类或者接口服务爬取相关的服务。

比如,爬取招标网的信息,爬取财经网的信息等等。


//爬取

public interface Crawler {


public void crawling();

}


//财经网爬取内容

public class CaiJingInfoCrawling implements Crawler{


@Override

public void crawling() {

// TODO Auto-generated method stub

//财经网业务逻辑

}


}


//招标网爬取

public class ZhaoBiaoCrawling implements Crawler{


@Override

public void crawling() {

// TODO Auto-generated method stub

}


}

//爬虫处理类

public class CrawlingHandler {

private Crawler crawler;


public CrawlingHandler(Crawler crawler) {

super();

this.crawler = crawler;

}

public void crawling() {

System.out.println("爬取");

crawler.crawling();

}


}



package com.test2;


public class CrawlingClient {


//客户端需要提前知道这个爬取的网站,也就是已经提前知道了要使用哪个具体的类

public static void main(String[] args) {

Crawler crawler = new CaiJingInfoCrawling();

CrawlingHandler clh = new CrawlingHandler(crawler);

//开始爬取内容

clh.crawling();

}

}


策略模式优点:可以在不改变原来的代码基础上灵活的增加新算法类,遵循设计模式中的开闭原则。什么事开闭原则,这里简单介绍一下,就是一个类或者服务可以对其进行扩展也就是开,对其修改不可以,也就是闭,这就是设计模式中的开闭原则。


缺点:就是客户端首先要知道这个是要调用的是什么,自己决定要调用哪个类,哪个接口等服务。



本文转自 豆芽菜橙 51CTO博客,原文链接:http://blog.51cto.com/shangdc/1916406

目录
打赏
0
0
0
0
351
分享
相关文章
【高薪程序员必看】万字长文拆解Java并发编程!(8):设计模式-享元模式设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的经典对象复用设计模式-享元模式,废话不多说让我们直接开始。
93 0
设计模式觉醒系列(04)策略模式|简单工厂模式的升级版
本文介绍了简单工厂模式与策略模式的概念及其融合实践。简单工厂模式用于对象创建,通过隐藏实现细节简化代码;策略模式关注行为封装与切换,支持动态替换算法,增强灵活性。两者结合形成“策略工厂”,既简化对象创建又保持低耦合。文章通过支付案例演示了模式的应用,并强调实际开发中应根据需求选择合适的设计模式,避免生搬硬套。最后推荐了JVM调优、并发编程等技术专题,助力开发者提升技能。
【设计模式】【行为型模式】策略模式(Strategy)
一、入门 什么是策略模式? 策略模式是一种行为设计模式,允许在运行时选择算法或行为。它将算法封装在独立的类中,使得它们可以互换,而不影响客户端代码。 为什么需要策略模式? 策略模式的主要目的是解决算法
96 14
Kotlin - 改良设计模式 - 策略模式
Kotlin - 改良设计模式 - 策略模式
121 4
Java 设计模式:装饰者模式(Decorator Pattern)
装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。
「全网最细 + 实战源码案例」设计模式——策略模式
策略模式(Strategy Pattern)是一种行为型设计模式,用于定义一系列可替换的算法或行为,并将它们封装成独立的类。通过上下文持有策略对象,在运行时动态切换算法,提高代码的可维护性和扩展性。适用于需要动态切换算法、避免条件语句、经常扩展算法或保持算法独立性的场景。优点包括符合开闭原则、运行时切换算法、解耦上下文与策略实现、减少条件判断;缺点是增加类数量和策略切换成本。示例中通过定义抽象策略接口和具体策略类,结合上下文类实现动态算法选择。
212 8
「全网最细 + 实战源码案例」设计模式——策略模式
前端必须掌握的设计模式——策略模式
策略模式(Strategy Pattern)是一种行为型设计模式,旨在将多分支复杂逻辑解耦。每个分支类只关心自身实现,无需处理策略切换。它避免了大量if-else或switch-case代码,符合开闭原则。常见应用场景包括表单验证、风格切换和缓存调度等。通过定义接口和上下文类,策略模式实现了灵活的逻辑分离与扩展。例如,在国际化需求中,可根据语言切换不同的词条包,使代码更加简洁优雅。总结来说,策略模式简化了多条件判断,提升了代码的可维护性和扩展性。
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
153 6
Kotlin教程笔记(53) - 改良设计模式 - 策略模式
Kotlin教程笔记(53) - 改良设计模式 - 策略模式
96 1
JavaScript设计模式及其在实战中的应用,涵盖单例、工厂、观察者、装饰器和策略模式
本文深入探讨了JavaScript设计模式及其在实战中的应用,涵盖单例、工厂、观察者、装饰器和策略模式,结合电商网站案例,展示了设计模式如何提升代码的可维护性、扩展性和可读性,强调了其在前端开发中的重要性。
121 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问