首页 > 编程语言 >java策略模式(Java策略模式多种返回结果)

java策略模式(Java策略模式多种返回结果)

时间:2022-10-25 17:37:22浏览次数:47  
标签:java 策略 模式 算法 Flyweight Java 行为 客户端


Java设计模式的中介者模式是怎样的?

  如果对象之间的关系原本一目了然,中介对象的加入便是“画蛇添足”。

来看下中介者模式的组成部分吧。

1) 抽象中介者(Mediator)角色:抽象中介者角色定义统一的接口用于各同事角色之间的通信。

2) 具体中介者(Concrete Mediator)角色:具体中介者角色通过协调各同事角色实现协作行为。

Java设计模式之Flyweight模式是怎样的?

  Flyweight的内部状态是用来共享的,Flyweight factory负责维护一个对象存储池(Flyweight Pool)来存放内部状态的对象。Flyweight模式是一个提高程序效率和性能的模式,会大大加快程序的运行速度。应用场合很多,下面举个例子:

先定义一个抽象的Flyweight类:

package Flyweight;public abstract class Flyweight。

java策略模式和工厂模式的区别

工厂模式是创建型模式

策略模式是行为性模式

一个关注对象创建

一个关注行为的封装

策略模式就是定义一系列的算法,这些算法可以在需要的时候替换和扩展.工厂模式是生成型的模式,在你需要的时候构建具体的实例.

在下面的情况下应当考虑使用策略模式:

1. 如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。

一个系统需要动态地在几种算法中选择一种。那么这些算法可以包装到一个个的具体算法类里面,而这些具体算法类都是一个抽象算法类的子类。换言之,这些具体

算法类均有统一的接口,由于多态性原则,客户端可以选择使用任何一个具体算法类,并只持有一个数据类型是抽象算法类的对象。

3. 一个系统的算法使用的数据不可以让客户端知道。策略模式可以避免让客户端涉及到不必要接触到的复杂的和只与算法有关的数据。

4. 如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。此时,使用策略模式,把这些行为转移到相应的具体策略类里面,就可以避免使用难以维护的多重条件选择语句,并体现面向对象设计的概念。

策略模式的优点和缺点

策略模式有很多优点和缺点。它的优点有:

1. 策略模式提供了管理相关的算法族的办法。策略类的等级结构定义了一个算法或行为族。恰当使用继承可以把公共的代码移到父类里面,从而避免重复的代码。

策略模式提供了可以替换继承关系的办法。继承可以处理多种算法或行为。如果不是用策略模式,那么使用算法或行为的环境类就可能会有一些子类,每一个子类提

供一个不同的算法或行为。但是,这样一来算法或行为的使用者就和算法或行为本身混在一起。决定使用哪一种算法或采取哪一种行为的逻辑就和算法或行为的逻辑

混合在一起,从而不可能再独立演化。继承使得动态改变算法或行为变得不可能。

3. 使用策略模式可以避免使用多重条件转移语句。多重转移语句不易维护,它把采取哪一种算法或采取哪一种行为的逻辑与算法或行为的逻辑混合在一起,统统列在一个多重转移语句里面,比使用继承的办法还要原始和落后。

策略模式的缺点有:

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

2. 策略模式造成很多的策略类。有时候可以通过把依赖于环境的状态保存到客户端里面,而将策略类设计成可共享的,这样策略类实例可以被不同客户端使用。换言之,可以使用享元模式来减少对象的数量。

策略模式与很多其它的模式都有着广泛的联系。Strategy很容易和Bridge模式相混淆。虽然它们结构很相似,但它们却是为解决不同的问题

而设计的。Strategy模式注重于算法的封装,而Bridge模式注重于分离抽象和实现,为一个抽象体系提供不同的实现。Bridge模式与

Strategy模式都很好的体现了"Favor composite over inheritance"的观点。

java策略模式和代理模式有什么区别?

这2者 根本就不能 谈什么区别。。。

完全不是一回事

策略模式:

多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。

对其他对象提供一种代理以控制对这个对象的访问。去网上搜一下,或者找本书比如设计模式之禅,大话设计模式等看一下自然就明白了

设计模式关键是要有实例加上理论才能理解透彻,然后再有意识地多运用

在这里问,别人也不可能给你多么详细的回答,网上有很多专门介绍设计模式的博文什么的,解释的都很好你好!

代理模式是比较常用的设计模式之一。其中新思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。

这些额外的操作通常需要与实际对象进行通信,代理模式一般涉及到的角色有: 抽象角色,代理角色,真实角色。

我的回答你还满意吗~~策略模式是封装算法的变化。

标签:java,策略,模式,算法,Flyweight,Java,行为,客户端
From: https://blog.51cto.com/yetaotao/5794997

相关文章

  • java递归(java递归求阶乘)
    JAVA中递归的概念说简单点就是方法调用自身方法。给你个例子:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多......
  • java简历项目经验大全(java商城项目经验简历)
    Java简历中工作经验怎么写错误示范:1、java后台开发2、前端编写正确范例:1、java程序开发岗位,主要负责:代码编写、数据库操作、sql语句优化、wsdl技术调用接口、生成接口等。2......
  • java资料(java资料网站)
    JAVA的简介java的基础知识有哪些根据我当初学习的资料整理了一下:变量、运算符和表达式、扫描仪和随机器、判断语句、循环语句、数组、面向对象、封装、继承、多态、抽象类和......
  • java输出(java输出语句快捷键)
    java最简单的输入输出java输出语句怎么写去百度文库,查看完整内容>内容来自用户:白岸海歌System.out.print——标准输出流Java的流类,主要是:输入流类InputStream输出流类Outp......
  • java过滤器(java过滤器的实现代码)
    javaaccept()在文件过滤器中的作用?javaaccep  getHostAddress()和s。getPort()作为参数调用安全管理器的checkAccept方法,以确保允许该操作。这可能会导致SecurityEx......
  • java运行环境(eclipse设置java运行环境)
    JAVA运行环境和J2EE运行环境的搭建有什么特点?一、什么是JDK?学JAVA的人都应该知道SUN公司的JAVA技术平台按其应用环境的不同有三个非常著名的版本,他们是J2SE(用于普通桌面......
  • java运行环境下载(我的世界Java运行环境)
    Java程序运行环境手机有JAVA扩展功能,是不是还需要JAVA  实现跨平台的就是这个虚拟机,也就java的运行环境.java的工作原理:首先是java程序的源代码(.java文件)→编译→java......
  • java输出语句(java输出语句格式+a,+什么意思)
    JAVA输入输出的用法?你是说控制台输入输出的问题吧代码如下:publicstaticvoidmain(String[]arg){Scannerscanner=newScanner(System.in);System.out.print("请输入......
  • Java 获取天数差(只看日期不看时间)
    /***date2比date1多的天数,只看天数,不看秒数**@paramdate1*@paramdate2*@return*/privatestaticintcalDateDistan......
  • linux LVS的NAT工作模式
    LVS:lvs是一个负载均衡的一个集群软件,由内核集成,性能强大,支持百万计并发。LVS集群的相关概念:VS:虚拟服务器,指LVS服务器自身RS:提供服务的服务器CIP:客户端ip地址......