`

设计模式之策略模式总结

阅读更多

再上一篇文章《设计模式之策略模式》中,我们通过模拟鸭子项目,了解了什么是策略模式,怎么使用策略模式。本文将通过鸭子项目的学习,对策略模式进行总结。

策略模式:

分别封装行为接口,实现算法族,超类(父类)里放行为接口对象,

在子类里具体设定行为对象。

原则就是:

    分离变化部分,封装接口,基于接口编程各种功能。

    此模式让行为算法的变化独立于算法的使用者。

策略模式总结:

1:策略模式三要素:

A:接口类。策略接口或是策略抽象类。

B:实现策略接口的具体策略类

C:context上下问。持有具体策略类的实例,并负责调用相关的算法。

来看看duck项目中三个对应

A:对应的就是FlyBehavior和QuackBehavior两个抽象类

B:具体实现策略类就是QuackBehavior的两个实现类及FlyBehavior接口的两个实现类

C:上下文,是由具体策略类的实例。GreenHeadDuck和RedHeadQuck

2:策略模式注意点

2.1:要分析出项目中变化部分与不不变化的部分(如duck项目中的Fly及Quack就是变化的)

2.2:多用组合少用基础;

    用行为类组合,而不是行为的继承。更有弹性

 

3:策略模式优缺点

策略模式优点

可以自由切换算法

避免了多条件的判断

扩展性好可以定义新的算法提供给使用者

策略模式缺点

算法类数量增多,每个算法都是一个类

算法要对外安全暴露,因为使用者来决定是用哪个算法,必然要了解算法内部做了什么。

本文出自凯哥Java(kaigejava).欢迎来聊

 

分享到:
评论

相关推荐

    深入浅出设计模式之策略模式总结(一)附例子

    在这个“深入浅出设计模式之策略模式总结(一)”中,我们将深入探讨策略模式的基本概念、工作原理以及如何通过实例来应用它。 策略模式的核心是将算法封装到具有共同接口的独立类中,使得它们可以相互替换。在描述...

    设计模式之策略模式,商场收银,封装算法

    总结起来,策略模式和封装算法在商场收银场景中的结合,提供了灵活的折扣策略管理方式,使得系统能够根据业务需求快速适应变化,同时也降低了代码的复杂性和维护成本。通过实践和理解这种设计模式,开发者能够提升...

    设计模式之策略模式

    博客文章《设计模式之策略模式》中可能提供了策略模式的实例代码,通过一个实际的问题(例如排序数组)来展示如何应用策略模式。在代码中,可能会有如下结构: - 定义一个`SortStrategy`接口,包含`sort()`方法。 -...

    设计模式之策略模式(附demo)

    总结来说,策略模式是设计模式中的重要一环,它提供了管理算法变化的优雅方式,使得代码更加灵活、可维护。通过分析和学习"policy"压缩包中的示例代码,我们可以深化对策略模式的理解,并将其应用于实际的开发工作中...

    走进设计模式之 策略模式(Strategy)

    总结一下,策略模式是一种将算法家族封装起来,使其互不影响的设计模式。它提供了一种方式,让算法的变化独立于使用算法的客户。在`Strategy.cpp`、`main.cpp`、`Context.cpp`、`Strategy.h`、`Context.h`等文件中,...

    设计模式之策略模式(Strategy Pattern)

    总结来说,策略模式是一种强大的设计模式,它提供了管理可互换算法的结构,使代码更具可扩展性和可维护性。在面对需要根据条件选择不同行为的场景时,策略模式通常是一个优秀的解决方案。通过理解并熟练应用策略模式...

    C#面向对象设计模式纵横谈(25):设计模式总结

    本篇文章将对一系列重要的C#面向对象设计模式进行总结,帮助开发者更好地理解和应用这些模式。 1. 工厂模式:工厂模式是一种创建型设计模式,提供了一种创建对象的最佳方式,通过抽象工厂接口,避免了代码与具体类...

    设计模式之美——教你写出高质量代码

    设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的经验总结。"设计模式之美——教你写出高质量代码"这个主题旨在帮助开发者更好地理解和应用设计模式,从而提升代码的质量和可维护性。设计模式...

    李建忠 C#面向对象设计模式纵横谈(25):设计模式总结

    总结来说,李建忠先生的“设计模式总结”涵盖了C#中广泛使用的设计模式,强调了它们在实际项目中的应用价值。理解并熟练运用这些模式,对于提升C#开发者的专业素养和项目质量具有重大意义。无论是初学者还是经验丰富...

    设计模式之美—学习笔记

    设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的经验总结。这些模式在不同的场景下被反复验证并被广泛接受,为开发者提供了一种标准的、可复用的解决方案。在这个“设计模式之美”的学习笔记...

    软件设计模式策略模式实例

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件工程中,当一个系统需要在不同时间执行不同的算法或者行为时,策略模式就显得尤为有用。这种模式将算法封装到独立的可相互替换的策略类中,使得...

    Java设计模式之策略模式

    总结来说,Java设计模式中的策略模式是一种强大的工具,它提供了一种管理算法族的方式,使得我们可以根据需要灵活选择并切换算法,从而提高代码的复用性和可维护性。在面对多变的行为需求时,策略模式是解决问题的一...

    java设计模式之策略模式

    在"java设计模式之策略模式"的学习中,我们可以通过一个简单的例子来理解它的应用。例如,在一个软件系统中,我们可能需要对不同的数据进行排序,不同的排序算法(如冒泡排序、快速排序、插入排序等)可以被视为策略...

    设计模式之策略模式源码(C#+.NET6)

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在C#与.NET6框架下,策略模式的应用能够帮助我们实现代码的灵活性和可扩展性。下面将详细讲解策略模式的核心概念、实现方式以及如何在实际项目中应用...

    设计模式 之 策略模式 使用c#实现

    在这个"设计模式 之 策略模式 使用c#实现"的案例中,我们将探讨如何在上传收银系统这样的实际场景中应用策略模式。 首先,我们需要理解策略模式的核心概念:策略(Strategy)接口定义了一族算法,实现了策略接口的...

Global site tag (gtag.js) - Google Analytics