【设计模式】行为型01策略模式(strategy patten)

     学设计模式一段时间了,有些懂了,有些半知半解,通过写笔记博客的方式总结一下:

     关于策略模式,我的个人理解就是将一些经常变动的算法独立抽取出来,可以是一个方法,也可以是一个策略类,这样,如果有需求变更,只需要添加新的策略类然后进行调用切换即可。

     虽然个人使用时一般是抽取为方法,但是以面向对象的角度以及书上的类图来看,采用策略类比较符合面向对象的思想。当然也不必墨守成规,灵活健壮清晰可读即可,不必过度去设计。


策略模式

1、场景:

用于经常变动的业务场景或算法。

2、类图:


整个策略的消费者,对应类图中的Context:

package com.pat.stratage;
/**
 * 策略消费者
 * @author Administrator
 *
 */
public class Context {
	//策略对象
	private Stratage stratage;
	
	public void calculate() {
		//调用策略类中的具体策略
		stratage.algo();
	}
	
	//构造方法
	public Context() {}
	public Context(Stratage stratage) {
		this.stratage=stratage;
	}
		
}

策略的接口类:

package com.pat.stratage;
/**
 * 具体策略接口
 * @author Administrator
 *
 */
public interface Stratage {
	public void algo();
}

具体策略1

package com.pat.stratage;
/**
 * 策略实现类1
 * @author Administrator
 *
 */
public class StratageA implements Stratage{

	@Override
	public void algo() {
		System.out.println("执行策略A");
		
	}

}

具体策略2

package com.pat.stratage;

public class StratageB implements Stratage{

	@Override
	public void algo() {
		System.out.println("执行策略B");
		
	}

}

具体策略3

package com.pat.stratage;

public class StratageC implements Stratage{

	@Override
	public void algo() {
		System.out.println("执行策略C");
		
	}

}

测试:

package com.pat.stratage;

public class TestStratage {
    public static void main(String[] args) {
        //生产策略A对象
        Stratage str = new StratageA();
        //构造消费者对象
        Context con = new Context(str);
        //调用方法
        con.calculate();
        
        //生产策略B对象
        Stratage str2 = new StratageB();
        //构造消费者对象
        Context con2 = new Context(str2);
        //调用方法
        con2.calculate();
    }
}



控制台打印结果:
执行策略A
执行策略B

3、拓展提升:

上面只是策略模式的基本用法,还可以横向扩展或与其它设计模式结合,从而更灵活的运用。

例如,每个策略都需要传入参数返回计算完成的结果等等,这里不多解释了,记住核心,随机应变即可。

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 华南理工大学模式识别期末试卷是专门针对学生在模式识别课程中所学知识进行考核和评估的一种考试方式。该试卷通常包含一系列的选择题、填空题、计算题和论述题,旨在考查学生对模式识别的理论知识、算法以及实践应用的掌握程度。 试卷中的题目可能涉及到模式识别的基础概念,如特征提取、数据降维、分类器构建等;也可能涉及到模式识别的算法和方法,如贝叶斯决策理论、K近邻算法、支持向量机等;还可能涉及到模式识别的应用领域,如人脸识别、手写数字识别、语音识别等。学生需要根据题目的要求,运用所学知识进行分析、推理和解答。 在考试中,学生需要具备扎实的数学基础,熟悉模式识别理论,并能够熟练运用相关的数学工具和编程语言,如Python、MATLAB等。同时,良好的逻辑思维能力、分析问题和解决问题的能力也是参加试卷的关键要素。 总而言之,华南理工大学模式识别期末试卷是一种能够全面考察学生在模式识别课程中所掌握知识和应用能力的考试形式,对于学生来说,通过认真准备和复习,能够更好地应对这种形式的考试。 ### 回答2: 华南理工大学模式识别期末试卷是该学校模式识别课程的期末考试试卷。模式识别是一门研究如何利用计算机自动识别和分类模式的学科,是人工智能领域的重要方向之一。这门课程主要教授模式识别的基本原理、方法和应用。 试卷通常包括以下内容: 第一部分为选择题,考察学生对基本概念、算法和技术的理解。这些题目可能涉及到模式识别的概念定义、模式特征提取、分类器设计、模式识别应用等。 第二部分为计算题,要求学生进行具体的计算和推导。题目可能涉及到模式识别算法的数学推导、特征提取过程的计算、分类器的训练和测试等。 第三部分为应用题,让学生通过实际问题来应用模式识别技术。题目可能要求学生根据给定的数据集进行模式识别实验,利用已学的算法和技术完成数据分析、分类和预测等任务。 此外,试卷可能还包括开放性问题,要求学生对某些模式识别理论或方法进行思考和讨论,发表自己的观点和见解。 通过这份试卷,教师可以评估学生对模式识别理论和方法的掌握程度,以及对实际问题的应用能力。这有助于帮助学生深入理解模式识别的基本概念和算法,并能在实际问题中灵活运用模式识别技术。 ### 回答3: 华南理工大学模式识别期末试卷是该课程的考试试卷,主要用于检验学生对于模式识别知识的掌握程度。模式识别是一门研究对于事物或数据进行分类、识别以及预测的学科。在这门课程中,学生通常会学习到一些基本的模式识别方法和算法,如最邻近算法、支持向量机、决策树等等。 期末试卷通常包括选择题、填空题和解答题。选择题主要考察学生对于模式识别基本概念的理解和记忆能力,如定义、原理等等。填空题一般是让学生填写某个算法的步骤或者是根据给定数据进行分类等。解答题是试卷中最重要的部分,通过解答题目能够更加全面地考察学生对于模式识别的理论知识和应用能力。 在这个试卷中,可能会涉及到一些实际应用案例,让学生运用所学的模式识别方法解决问题。例如,通过给定的数据集,要求学生设计一个模式识别的算法来预测某种产品的销量等。 总而言之,华南理工大学模式识别期末试卷是该课程的考试形式,通过测试学生对于模式识别的理论知识和实际应用能力,来评价学生的学习成果。这种形式能够帮助学生更好地掌握和应用模式识别技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值