从战略角度对Java抽象类与接口的剖析

2017-08-29 15:00汤谷云王修信
电脑知识与技术 2017年21期
关键词:设计模式观察者程序设计

汤谷云,王修信

(广西师范大学计算机科学与信息工程学院,广西桂林541004)

从战略角度对Java抽象类与接口的剖析

汤谷云,王修信

(广西师范大学计算机科学与信息工程学院,广西桂林541004)

从战略的角度出发,以横向思维和纵向思维的方式,剖析抽象类和接口内涵,分析研究两者的语法特征,阐述了这两个重要知识点的引入原因,以便于在实际应用的程序设计时能够立足于一定的高度,再借助软件设计模式,实现深度和宽度的扩展,从而形成具有高度、宽度和深度的立体结构的解决问题的思维方式。

设计模式;抽象类;接口;战略

1 问题的提出

用Java实现一个面向对象的程序设计,可以概括这个过程如图1所示:

图1 设计过程示意图

Java中抽象类与接口是非常重要的语法要素,从语言语法的角度掌握这两个知识点并不难,难的是在具体解决实际问题时,能不能自然而然想到运用它们。要运用准确到位,前提条件是对知识点的深刻理解,要了解知识点引入的背景原因、拟解决什么问题、怎样解决等,而不是单纯从语法的角度来认识接口和抽象类定义的规则和格式。面向对象编程中很多的实际应用问题都应该考虑以抽象类或接口为基础建立模型。用面向对象方式思考,通过模型体现出来。模型是真实事物的抽象,是对真实系统的简化;软件设计模式是程序设计过程中反复出现的一些问题的解决方案。可以理解成模板或范例,可以优化模型。如果要设计出优质的程序,程序设计模式的利用就很有必要。原因是设计模式满足了“开——闭原则”。

2 设计模式与战略

设计模式是相似问题的一种好的解决方案,可以使软件系统设计过程中有模板可依,满足了开闭原则。为什么中国要制定一个一个的五年规划?这实际上是制定了战略目标。一般情况下五年不会轻易发生变化,保证了国家有稳定的社会发展方向。为什么每个国家都会制定法律法规?根本的目的是为了明确人们的行为模式与标准,它有指引、预测、评价等作用。发展规划、法律法规等都具有战略意义,具有稳定性、规范性、约束性。众所周知,战略一经确定短期内是不会改变的,而战术却会随时调整。所谓的开与闭就是一个战略与战术的问题。换句话说,软件设计模式就是一个制定战略战术的场所。解决问题时能够先纵观全局制定战略,再实现战术,那么,优质的结果的可能性会大大增加。

3 抽象类接口与战略

设计模式的就是制定解决的问题战略与战术,是停留在分析设计阶段,最终付诸实施实现还需要具体的程序设计语言的技术支撑。Java技术中的抽象类和接口,就是在软件设计中制定战略的两种手段和方法,使用抽象类接口技术实现软件系统的宏观控制,用来制定战略,具体类是控制微观,实现战术。抽象类接口实现“闭”,具体类实现“开”。

以观察者模式为例,观察者模式是比较常用的一个模式,比如银行卡上余额变化就收到短信通知等。可以用观察者模式解劝决“一……就……”的问题。一般来说,观察者接口的工作就是随着被观察者的状态变化进行改变;被观察者的工作是增加、删除观察者,并在自身变化的时候通知观察者;一个被观察者可以有很多的观察者,可以使用向量可线性表,以学生一旦学习好了,父母就高兴,老师就可给高分为例,分析接口和抽象类的运用:

图2 观察者模式示意图

从上图中可看出,无论是观察者还是被观察者都能方便地进行维护,在接口抽象类复用基础上可以实现各类被观察者和观察者的更新、增加、删除,满足开闭原则。

4 抽象类接口的不同内涵

运用抽象类和接口在解决实际问题时,从语法的角度来说,大多数情况下是可以互换的,也就是说用抽象类解决的问题,用接口也一样能解决,从软件执行结果来看,没有不对的地方。如果不出现这种互换使用的情况,就要从内涵上深入理解两者的区别。从内涵上理解了,就能推断出接口语法上定义时为什么没有变量属性,而只有静态常量属性的严格定义。接口设计是一个横向思维的过程,是针不同类型事物共同特征(属性和方法),是被不同类型事物所共有的。Java中被共有的,用static修饰;接口不能确定哪一类事物,更不能确定对象,这就决定了接口没有构造方法,没有构造方法就不能给属性初始化,接口中的方法因为具有战略特性是抽象的,无法对变量属性进行操作,属性虽是体现类的特征,但更重要的是提供给方法进行操作的数据源。假定接口中存在属性,接口自身也没有机会去改变。即使实现接口的类有机会去改变接口中定义的属性,又因为属性是静态的,就会对其他实现了接口的类产生影响,所以接口有属性则必须是常量,这样避免实现接口的各个类去改变,从而引起不确定性。抽象类的设计是一种纵向思维的方式,是针对同一类事物的归纳与总结,首先能确定哪一类事物,也就能确定该类事物的对象,由于是限定在同类事物的范围内解决问题,所以对抽象类的语法要求便没有接口严格,它也是解决战略问题的,具有比具体类更高的抽象层次。从下图可以看出,解决学生这一类事物的问题,用抽象类比较准确。

图3 装饰模式示意图

当然,横向思维和纵向思维方式来对事物类别的划分也是相对,看问题的角度不同,则会得到不同的分类结果,上例中如果从行为能力角度思考,广西大学生和广东大学生就属于不同类,如果从概念范围来思考它们应该算是同类事物——学生的不同分支。

5 总结

Java的抽象类和接口是实现设计模式重要的手段,能从战略的高度管理设计软件。从语法上,很多用接口能完成的功能,表面上可以用抽象类替代,但使用时应该从语义上区别两者的不同,才能更合理地运用。从软件设计的层次上考虑,接口和抽象类都具有战略的眼光,不同的是接口设计提供了一个横向思维的空间,是对多类事物进行分析,得到不同类事物的共性。抽象类设计则是一个纵向思维的过程。是在一种事物结构范围内对问题的深入分析,提取同类事物的共性。抽象类和接口实现设计模式,使得对问题的考虑在战略层次上做到了全面和深入,从而形成具有高度、宽度和深度的立体结构的解决问题的思维方式。

[1]雍俊海.Java程序设计教程[M].2版.北京:清华大学出版社,2013.

[2]化志章.Java程序设计[M].北京:机械工业出版社,2012.

[3]王映辉.软件构件与体系结构[M].北京:机械工业出版社,2009.

[4]耿祥义,张跃平.Java2实用教程[M].4版.北京:清华大学出版社,2012.

[5]刘慧宁.Java程序设计[M].北京:机械工业出版社,2011.

TP312

A

1009-3044(2017)21-0084-02

2017-06-21

汤谷云(1967—),女,副教授,主要研究方向为计算机软件与应用。

猜你喜欢
设计模式观察者程序设计
“1+1”作业设计模式的实践探索
三维协同设计模式下的航天项目管理实践与展望
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
冷静而又理性的观察者——德国华人作家刘瑛访谈
交通机电工程设计模式创新探讨
高职高专院校C语言程序设计教学改革探索
PLC梯形图程序设计技巧及应用
互动式设计模式研究
观察者模式在Java 事件处理中的应用研究*