大话设计模式读书笔记--2.策略模式

liuconglin的博客 liuconglin的博客     2022-08-22     433

关键词:

面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类

定义

它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户

生活中例子: 穿衣服

已有的衣服: 内裤 ,外裤
已有的功能: 正常人的风格, 既先穿内裤在穿外裤
要添加的功能: 超人风格, 既先穿外裤在穿内裤

穿衣顺序的不同, 装扮成不同的风格

把所需的功能按正确的顺序串联起来进行控制,这就需要用到策略模式了

模式结构

Strategy: 定义所有支持算法的公共接口

ConcreteStrategy: 封装了具体的算法或行为,也就是具体的策略

Context:是算法对象工厂, 维护一个Strategy对象的引用, 产生具体算法对象

模式实现

场景:模拟商城收银软件,营业员根据客户所购买商品的单价和数量,向客户收费,优惠活动为打8折和满100返10块

场景分析:

业务不变的点: 获得总金额(结果)

业务变化点: 如何计算总金额(具体行为)

下载代码,解压后如下图:

优缺点

优点:1.Strategy是抽象父类,继承有助于提取出算法中的公共功能

       2.简化了单元测试,每个算法都有自己的类,可以单独测试

缺点:本例中,使用了是简单工厂模式+策略模式

       1.客户端需要知道所有的策略类

使用场景

在不同的时间,应用不同的业务规则, 但是目的是一样的

大话设计模式读书笔记——代理模式

代理模式代理者是指一个类别可以作为其它东西的接口。代理者可以作任何东西的接口:网络连接、内存中的大对象、文件或其它昂贵或无法复制的资源。维基百科-代理模式代理模式实现远程图片加载///<summary>///图片接口//... 查看详情

大话设计模式读书笔记——原型模式

原型模式原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实... 查看详情

大话设计模式读书笔记--12.状态模式

定义状态模式定义:当一个对象的内在状态改变时,允许改变其行为,这个对象看起来改变了其类消除庞大的条件分支,将特定状态的行为放入一个对象中生活中:开灯和关灯是两个状态模式结构Context:上下文环境,维护一个状态实例,... 查看详情

大话设计模式读书笔记--6.原型模式

简单的复制粘贴极有可能造成重复代码的灾难,但是java中提供了克隆的功能,如果一个对象创建过程复杂,又要频繁使用,在初始化信息不发生变化的情况下,应当采取克隆而不是new一个对象定义原型模式:用原型实例指定创建对象的... 查看详情

大话设计模式读书笔记——工厂方法模式

工厂方法模式工厂方法模式的实质是“定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。工厂方法模式VS简单工厂模式简单工厂的模式的最大优点在于工厂类中包... 查看详情

大话设计模式读书笔记--18.命令模式

定义命令模式定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作比如:吃烤串时,客人点烤羊肉,烤鸡肉,服务员记录下客人的点餐记录,然后通知厨师开始... 查看详情

大话设计模式读书笔记--13.适配器模式

 定义适配器模式定义: 将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容不能再一起工作的类,可以在一起工作需要的东西就在眼前,但却不能使用,短时间内无非改造,于是我们就想办法适配它例如:一... 查看详情

大话设计模式读书笔记--19.责任链模式

定义责任链模式定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它比如:员工小张向组长申请加薪,组长没这个权利并将请... 查看详情

大话设计模式读书笔记--8.外观模式

外观模式的用意是为子系统提供一个集中化和简化的沟通渠道,而不是向子系统加入新的行为生活中的例子:一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。该电源总开关可以同时控制上述所... 查看详情

大话设计模式读书笔记--7.模板方法模式

有时候,我们会遇到由一系列步骤构成的过程,这个过程从高层次上看是相同的,但有些步骤的实现可能不同,我们就要考虑使用模板方法生活中的例子:坐交通工具上班, A开车,B做公交,交通工具就是一个抽象模板定义定义一个操... 查看详情

大话设计模式读书笔记--1.简单工厂模式

定义专门定义一个类来负责创建其他类的实例,被创建的类通常具有共同的父类。它又称为静态工厂模式,属于类的创建型模式模式类图将对象的创建和对象本身业务处理分离了,可以降低系统的耦合工厂模式实现场景:实现一个... 查看详情

大话设计模式读书笔记--23.访问者模式

定义访问者模式定义:表示一个作用于某对象结构中的各元素的操作,它使你在不改变各元素的类的前提下,定义作用于这些元素的新操作把数据结构,和作用于数据结构上的操作,分离模式结构代码实现场景:男人和女人谈恋爱,男人... 查看详情

大话设计模式读书笔记——开闭原则

开闭原则在面向对象编程领域中,开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”[1],这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。该特性在产品... 查看详情

大话设计模式-笔记

------------------------原则-----------------------------------单一职责原则开放--封闭原则依赖倒转原则迪米特法则-----------------------模式------------------------------------简单工厂模式策略模式装饰模式代理模式工厂方法模式原型模式模板模式外... 查看详情

《大话设计模式》笔记——行为型模式2

19、解释器模式(Interpreter)定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。UML:PS:觉得解释器模式在实际中很少有机会能用上。 20、中介者模式(Mediator)定义... 查看详情

大话设计模式之策略模式

策略模式  定义了一系列的算法,分别封装起来,让他们之间可以互相替换。此模式让算法的改变不会影响到使用算法的客户。  在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对... 查看详情

java之策略模式(大话设计模式)

温故而知新,每次读设计模式都会有不同的体验,坚持每天一个设计模式,直到熟练运用设计模式。策略模式定义了很多完成相同工作的算法,但实现不同,它可以以相同的方式调用所有的算法,减少了算法和调用算法的耦合。... 查看详情

大话设计模式——策略模式

一、开篇  上篇文章【大话设计模式】——简单工厂模式告诉了我们一个网吧收费工厂对象怎样创建收费形式(白天收费、夜间收费)的实例。简单工厂代码中有非常多case分支语句 ,假设我们还想填加收费的形式(比方会... 查看详情