java设计模式1-策略模式

     2022-04-19     345

关键词:

策略模式:分别封装行为接口,实现算法族,超类里放行为的接口对象,在子类里具体设定行为对象.
原则就是:分离变化部分,封装接口,基于接口编程各种功能.

为什么要用策略模式

{

继承带来的问题: (为策略模式)
对类的局部改动,尤其是超类的改动,会影响其它部分,影响会有溢出效应.
溢出效应:
在超类中添加了一个功能(方法),子类直接继承得到了这个方法.

超类里面挖的一个坑,每一个子类都要来填,增加工作量,复杂度是N的平方,

}

什么情况下用策略模式?

我的理解:在有很多种形为或功能的情况下.而其每一种形为或功能在不同时候表现不一样.也就是说当听到什么什么同进,表现也就不一样了.

比如说:鱼可以游,但是有的鱼是慢慢游,有的鱼游得一般,有的鱼游得很快.所以就可以定义一个接口ISwim,然后就在用SlowSwim,GeneralSwim,QuickSwim三个类分别去实现这个ISwim接口.SlowSwim,GeneralSwim,QuickSwim这三个类就叫行为族.

怎样用这个策略模式?

还是按照上面的鱼来说,定义一个抽象的Fish类,Fish里面有一个ISwim字段,通过构造方法传入.

现在有假设有一条鲸鱼是快游

public class  Whale extends Fish{
{
    private ISwim swim;

    whale(ISwim swim){
        this.swim=swim;
    }

    public void swim (){
        swim.swim();
    }
    public void static main(String[] arg){
        //鲸鱼是很游得很快的所以传入ISwim的子类QuictSwim
        Whale whale= new Whale(new QuictSwim());
        whale.swim();
    }
}

策略模式的优点?

1,当我们要添加一个行为(方法)的时候可以不用去改源码,直接添加一个类就可以了.

2,我们把所有行为族定义好之后,就要以自己的进行行为之间组合.

策略模式的缺点?

1,客户端必须知道所有的策略类也就是行为族,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算法的区别,以便适时选择恰当的算法类。换言之,策略模式只适用于客户端知道所有的算法或行为的情况。

2,行为族很多类很多.

java设计模式--策略模式

1.策略模式1.1定义策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。1.2底层机制将有共性的行为抽象为一个接口,其中有此种行为的声明。该接口的实现类都实现... 查看详情

java设计模式—策略模式

定义    通过选择策略类,来执行不同算法分支。核心是通过注入对象,改变行为。此模式其实就是springIOC思想。优点   1.算法可以自由的切换。   2.避免使用多重条件判断。   3.便于扩展:增加一个策略只需... 查看详情

java设计模式—策略模式

定义    通过选择策略类,来执行不同算法分支。核心是通过注入对象,改变行为。此模式其实就是springIOC思想。优点   1.算法可以自由的切换。   2.避免使用多重条件判断。   3.便于扩展:增加一个策略只需... 查看详情

java设计模式—策略模式

定义    通过选择策略类,来执行不同算法分支。核心是通过注入对象,改变行为。此模式其实就是springIOC思想。优点   1.算法可以自由的切换。   2.避免使用多重条件判断。   3.便于扩展:增加一个策略只需... 查看详情

java设计模式之策略模式

1.策略模式的介绍  策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。简单的... 查看详情

设计模式中的多态——策略模式详解(代码片段)

目录1.关于策略模式2.策略模式详解2.1策略模式定义2.2策略模式的UML类图3.策略模式的优点3.1一个使用策略模式的例子3.2与其他实现方式的对比3.3使用策略模式的优点4.使用工厂方法模式改进原有策略模式5.总结5.参考资料1.关于策... 查看详情

设计模式课程设计模式精讲19-3策略模式源码解析(代码片段)

1    源码解析1.1    源码解析1(jdk中的应用1)1.2    源码解析2(jdk中的应用2)1.3    源码解析3(Spring中的应用1)1.4    源码解析4(Spring中的应用2)   1    源码解析1.1    源码解... 查看详情

设计模式之-策略模式

1、策略模式定义:将一系列算法封装起来,为了以后可以互相替换使用,由策略类和context组成,context接受用户信息,然后将请求委托给策略类(现实生活中,我们要去一个城市,交通方式就有:飞机、高铁、开车、大巴等,这... 查看详情

java设计模式之——策略模式

1、策略模式有什么好处?    策略模式的好处在于你可以动态的改变对象的行为。2、设计原则    设计原则是把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口(c++中可以用虚类... 查看详情

java设计模式-策略模式

1.1需求背景Background:M公司为某电影院开发了一套影院售票系统,在该系统中需要为不同类型的用户提供不同的电影票打折方式,具体打折方案如下:(1)学生凭学生证可享受票价8折优惠;(2)年龄在10周岁以及以下的儿童可... 查看详情

策略模式—java实现(转)

 1.现实需求客户有了新的需求,这时我们直接新增策略即可,改很少的代码。基本符合我们面向对象原则中的开闭原则(对扩展开放,对修改关系),实现了高内聚低耦合。2.策略模式定义策略模式,又叫算法簇模式,就是... 查看详情

java策略设计模式

...sp;  实际上不要被晦涩难懂的定义迷惑,其实策略设计模式就是定义一个接口,那么只要实现该接口的类,对这些方法进行实现,那么不同的实现类就完成了不同的算法逻辑,而使用该接口的地方,可以根据需要随意更改... 查看详情

设计模式----------策略模式

策略模式,不讲过多的废话。我们来直接看代码。1、我们先定一个接口packagecom.guoguo.celvemoshi;/***定义一个策略接口*@author蝈蝈**/publicinterfaceStrategyService{//定义一个可执行方法publicvoidexecute();}2、策略的具体实现(java多态---不懂先... 查看详情

java设计模式——策略模式(代码片段)

1、简介策略模式(StrategyPattern)是一种比较简单的模式,也叫做政策模式(PolicyPattern)。其定义如下:Defineafamilyofalgorithms,encapsulateeachone,andmaketheminterchangeable.(定义一组算法,将每个算法都封装起来,并且使它们之间可以互... 查看详情

day321.策略模式&职责链模式-java设计模式(代码片段)

策略模式将原本继承的方式,换成组合、聚合,让算法变化(策略)与算法客户(对象)分离一、编写鸭子项目,具体要求如下:1)有各种鸭子(比如野鸭、北京鸭、水鸭等,鸭子有各种行为,比如叫、飞行等)2)显示鸭... 查看详情

java设计模式—策略模式

  在阎宏博士的《JAVA与模式》一书中开头是这样描述策略(Strategy)模式的:  策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模... 查看详情

java设计模式之策略模式

    策略模式属于对象的行为模式,策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换,策略模式让算法独立于使用它的客户而独立变化。策略模式使这些算法在客户端调用它们... 查看详情

java设计模式之策略模式

...此模式让算法的变化,不会影响到使用算法的客户(大话设计模式)。策略模式UML图      策略模式代码   古代的各种计谋都是一种策略,这次我们的例子就拿其中一种离间计来写的,理解起来非常容易,代码... 查看详情