java-JAVA 策略设计模式,为什么抽象策略类必须是一个抽象类,而不能是一个接口?

问题描述

JAVA 策略设计模式,为什么抽象策略类必须是一个抽象类,而不能是一个接口?

解决方案

可以是接口。但是GoF的书是按照C++写的,而C++没有接口,只有抽象类。很多人照抄到Java,还是用的抽象类。

解决方案二:

而且作为Java,如果是Java 7或者以前,最好的做法就是用接口,因为Java不支持多继承。而Java 8,最好用Lambda表达式。

解决方案三:

抽象类的作用在于多个类都需要用到的时候,提供方便,在开发中更加高效开发

解决方案四:

可以使用接口的啊,建议楼主找一个用Java讲设计模式的,我学习的时候是看“大话设计模式”这本书,用C#写的,
我在自己的csdn博客有专题讲设计模式的,算是一个学习笔记吧,楼主可以看一下。
zw0283设计模式专题之策略模式

时间: 2024-10-21 20:32:12

java-JAVA 策略设计模式,为什么抽象策略类必须是一个抽象类,而不能是一个接口?的相关文章

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

Strategy是属于设计模式中 对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类. Stratrgy应用比较广泛,比如,公司经营业务变化图,可能有两种实现方式,一个是线条曲线,一个是框图(bar),这是两种算法,可以使用Strategy实现. 这里以字符串替代为例, 有一个文件,我们需要读取后,希望替代其中相应的变量,然后输出.关于替代其中变量的方法可能有多种方法,这取决于用户的要求,所以我们要准备几套变量字符替代方案. 首先,我们建立一个抽象类RepTempRule 定

优化Java Toolbox for i的连接策略

作为一种面向对象的Java编程模型,IBM Java Toolbox for i为Java应用程序访问IBM i数据与资源提供了 API级的通信支持.而AS400类则代表了IBM Java Toolbox for i与IBM i的Socket连接,任何依赖IBM Java Toolbox for i操纵IBM i数据与资源的行为都是以与IBM i的通信连接为前提.从这个意义上讲,AS400可以看 成IBM i的访问入口点.本文的主要目标就是从重用IBM i连接对象AS400的角度,指导读者如何使

Java技术,IBM风格: 垃圾收集策略,第1部分: 不同的策略提供了灵活性

可以使用 4 种不同的策略配置 IBM Developer Kit for the Java 5.0 Platform(IBM SDK)中的垃圾收集(GC).本文(关于 GC 的两篇文章的第一篇)介绍不同的垃圾收集策略并讨论它们的性质.在阅读本文之前,您应该对 Java 平台中的垃圾收集有基本的认识.第 2 部分将给出一种选择策略的量化方法,以及一些示例. 为什么要有不同的 GC 策略? 能够使用不同的策略使开发人员增加了对应用程序的控制能力.有许多种 GC 算法,每种算法各有优缺点,这取决于工

【设计模式系列】--策略模式

什么是策略模式 在前面的博文中,小编主要向小伙伴介绍了组合模式,今天这篇博文,我们继续来学习设计模式的相关知识,今天和小伙伴们见面的是策略模式,策略模式英文名字叫Strategy,策略模式属于行为模式的一种,她对一系列的算法加以封装,为所有算法定义一个抽象的算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交由客户端决定,策略模式主要用来平滑的处理算法的切换. 策略模式结构图 我们来看一下策略的结构图,如下所示:   对上述结构图进行简单的解释说明:         a

举例讲解iOS应用开发中对设计模式中的策略模式的使用_IOS

策略模式是一种常见的软件设计模式,这里简单得介绍一下策略模式并用IOS简单实现一下. 所谓的策略模式,顾名思义是要采用不同的策略的.一般来说,在不同的情况下,处理某一个问题的方法也不一样.比如说对字符串的排序和对数字的排序,虽然用的都是快排,但是显然不可能使用一段通用的代码.有人说java里面的compareTo可以做到,但如果考虑这么一个问题:同样是出门旅行,老年人身体虚弱,需要大量的休息,而孩子则是精力充沛,希望玩到更多的景点.如何在同一模式下表达以上信息.采用合理的设计模式进行封装而不是大

从Java类库看设计模式(5)

有了前面诸多设计模式的基础,这儿可以提出一个比较特殊的模式MVC.MVC并不属于GOF 的23个设计模式之列,但是它在GOF的书中作为一个重要的例子被提出来,并给予了很高的评 价.一般的来讲,我们认为GOF的23个模式是一些中级的模式,在它下面还可以抽象出一些更 为一般的低层的模式,在其上也可以通过组合来得到一些高级的模式.MVC就可以看作是一些 模式进行组合之后的结果(实际上,MVC的出现要早于设计模式的提出,这而只是对它在设计 模式的基础上进行在分析).如果没有前面的基础,理解MVC或许会有

在Java中应用设计模式--Factory Method

设计 在设计模式中,Factory Method也是比较简单的一个,但应用非常广泛,EJB,RMI,COM,CORBA,Swing中都可以看到此模式的影子,它是最重要的模式之一.在很多地方我们都会看到xxxFactory这样命名的类,那么,什么是Factory Method,为什么要用这个模式,如何用Java语言来实现该模式,这就是本文想要带给大家的内容. 基本概念 Factory Method是一种创建性模式,它定义了一个创建对象的接口,但是却让子类来决定具体实例化哪一个类.当一个类无法预料要

深入浅出基于Java的代理设计模式

一.引子 我们去科技市场为自己的机器添加点奢侈的配件,很多DIYer都喜欢去找代理商,因为在代理商那里拿到的东西不仅质量有保证,而且价格和售后服务上都会好很多.客户通过代理商得到了自己想要的东西,而且还享受到了代理商额外的服务:而生产厂商通过代理商将自己的产品推广出去,而且可以将一些销售服务的任务交给代理商来完成(当然代理商要和厂商来共同分担风险,分配利润),这样自己就可以花更多的心思在产品的设计和生产上了. 在美国,任何企业的产品要想拿到市场上去卖就必须经过代理商这一个环节,否则就是非法的.看

从Java类库看设计模式(3)

上一次主要介绍了几个创建型的设计模式AbstractFactroy,FactoryMethod和Singliton .它们的共同的特点,都是用来创建对象的.这次接下来的内容,涉及到的是几个结构型的 模式.所谓结构型模式,就是用来解决在创建系统结构的过程中,通过对类或者对象进行合 理有效的组合,以获得更大的结构的方法.这儿主要讲到了Bridge模式和Decorator模式.对 于Bridge模式可能需要更多的理解,因为它在很大程度上说,例示了设计模式的基本的设计 思路和原则. Bridge模式 当