大话设计模式之策略模式(代码片段)

浅夏丶未央 浅夏丶未央     2022-11-10     424

关键词:

背景:

商场促销期间,可能会出现8折、5折的促销活动,也可能出现满100减10、满200减30的促销活动,设计一个收银系统。

策略模式:定义了算法家族,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。

UML类图:

Demo:

算法接口Strategy:

1 public interface Strategy 
2 
3     void algorithmInterface();
4 

具体算法ConcreteStrategyA:

1 public class ConcreteStrategyA implements Strategy 
2     @Override
3     public void algorithmInterface() 
4         System.out.println("算法A实现");
5     
6 

具体算法ConcreteStrategyB:

1 public class ConcreteStrategyB implements  Strategy 
2     @Override
3     public void algorithmInterface() 
4         System.out.println("算法B实现");
5     
6 

Context上下文类:

 1 public class Context 
 2 
 3     private Strategy stagtegy;
 4 
 5     public Context(String algorithm) 
 6         switch (algorithm)
 7             case "A":stagtegy = new ConcreteStrategyA();break;
 8             case "B":stagtegy = new ConcreteStrategyB();break;
 9             default:break;
10         
11     
12 
13     public void contextInterface()
14         stagtegy.algorithmInterface();
15     
16 

测试类:

1 public class Main 
2 
3     public static void main(String[] args) 
4         Context context = new Context("A");
5         context.contextInterface();
6     
7 

总结:

策略模式在平时开发中比较常用,使用场景是:一个接口或抽象类有一组具体的实现,使用时使用接口或抽象类中的抽象方法,这样可根据传入的不同实例实现不同的策略。比如可以将上述的Strategy当成参数传递给一个方法。

大话设计模式之策略模式

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

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

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

大话设计模式--策略模式(代码片段)

策略模式(Strategy):定义了算法家族,分别封装起来,让各个算法之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。/***策略,定义计算报价算法的接口**/publicinterfaceStrategy/**... 查看详情

大话设计模式之简单工厂模式(代码片段)

大话设计模式——简单工厂模式--参考自《大话设计模式》需求现在有一个需求,实现一个简单的计算器对于一般的初学者来说可能会这么实现:publicclasscalculatepublicstaticvoidmain(String[]args)Scannercin=newScanner(System.in);System.out.println(&qu... 查看详情

大话设计模式之代理模式(代码片段)

代理模式是为了隐藏真实对象,为其提供一种代理以控制对这个对象的访问。UML类图: 公用接口Subject类:1/**2*定义共有接口3*/4publicinterfaceSubject56voidresquest();7真实对象RealSubject类:1/**2*真实实现3*/4publicclassRealSubjectimplementsSubj... 查看详情

大话设计模式之简单工厂模式(代码片段)

背景需求:模拟一个简单计算器。UML类图:说明:抽象类AbstractOperation有一个抽象方法getResult和两个成员变量,加减乘除分别继承AbstractOperation并实现getResult方法即可。OperationFactory是一个简单工厂方法,可根据入参实例化不同的... 查看详情

大话设计模式之代理模式(代码片段)

引言:让我们重温经典,致敬经典代理模式:为其他对象提供一种代理以控制对这个对象的访问UML: 解读:代理模式要求代理者和被代理者实现同一个接口或者继承自同一个父类。并且代理者要持有真实对象的引用。所以代... 查看详情

java设计模式之策略模式

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

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

慢慢的做记录,做最强大的自己看了大话设计模式之后感触很深,发现自己还有很多学习的东西,设计软件并不是一两句代码把功能写完了就行,需要思考的内容有很多代码来源参考大话设计模式这本书,这里在博客里记录一下... 查看详情

大话设计模式之工厂方法模式读后感(代码片段)

引言:让我们重温经典,致敬经典工厂方法模式:定义一个用于创建对象的接口,让子类来决定实例化哪一个类,工厂方法使一个类的实例化延迟到了子类。UML图:1packagecom.dzf.designtest;23/**4*<desc>5*工厂方法:定义一个创建对... 查看详情

大话设计模式之简单工厂读后感(代码片段)

引言:让我们重温经典,致敬经典简单工厂模式:根据调用端传参来有选择的实例化目标对象。UML类图:我们知道简单工厂就是为我们生成我们需要的对象。举个栗子:我们在舞台看表演的时候,一场场表演下来,我们可以总结... 查看详情

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

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

设计模式之-策略模式(strategypattern)(代码片段)

...,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对象。策略对象改变context对象的执行算法。 C++实... 查看详情

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

设计模式之策略模式  策略模式(StraregyPattern)是一种比较简单的模式,也叫政策模式(PolicyPattern),定义如下:Defineafamilyofalgorithms,encapsulateeachone,andmaketheminterchangeable.(定义一组算法,将每个算法都封装起来,并... 查看详情

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

...例1.简要概述策略模式也叫作决策模式,属于行为型设计模式。策略模式定义了解决某一个问题的一个算法族,允许用户从该算法族中针对不同的场景选择一个算法解决该问题,同时可以方便的更换算法或者增加新的... 查看详情

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

  今天我们要介绍的设计模式叫做策略模式。策略模式其实就是把不同的策略(方法)封装在不同的类中。在策略模式(StrategyPattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式(... 查看详情

设计模式之策略模式(行为型)(代码片段)

一、模式定义策略模式:定义一系列算法,然后将每一个算法封装起来,并将它们可以互相替换。也就是将一系列算法封装到一系列策略类里面。策略模式是一种对象行为型模式。策略模式符合“开闭原则“StrategyPattern:Defineafami... 查看详情

&lt;二&gt;读&lt;&lt;大话设计模式&gt;&gt;之策略模式

...不错,好好加油。      <<大话设计模式>>解说策略模式是以商场收银软件程序开头的,那么问题来了。哪家商场收银软件强,开玩笑了。读过上篇文章《《简单工厂模式》》的知道,它有两个缺点... 查看详情