今天给大家分享小编自己整理的Java设计模式深入研究PDF,大家来仔细看看!
主要有12章的内容:接口与抽象类、反射、工厂模式、生成器模式、观察者模式、桥接模式、代理模式、状态模式、访问者模式、命令模式、装饰器模式、组合模式。
接口与抽象类
语义简单描述
接口与抽象类是面向对象思想的两个重要概念。接口仅是方法定义和常量值定义的集合,方法没有函数体;抽象类定义的内容理论上比接口中的内容要多得多,可定义普通类所包含的所有内容,还可定义抽象方法,这也正是叫作抽象类的原因所在。接口、抽象类本身不能示例化,必须在相应子类中实现抽象方法,才能获得应用。
那么,如何更好地理解接口与抽象类?接口中能定义抽象方法,为什么还要抽象类?抽象方法无函数体,不能示例化,说明接口、抽象类本身没有用途,这种定义有意义吗?接口与抽象类的关系到底如何?
获得这些问题答案的最好办法就是来自于生活实践。例如写作文的时候,一定要先思考好先写什么,后写什么;做几何题的时候,要想清楚如何引辅助线,用到哪些公理、定理等;做科研工作的时候,- -定要思索哪些关键问题必须解决;工厂生产产品前,必须制订完善的生产计划等。也就是说,人们在做任何事情前,一般来说是先想好,再去实现。这种模式在生活中是司空见惯的。因此,Java语言- -定要反映“思考-实现"这一过程,通过不同关键字来实现,即用接口( interface).抽象类( abstract)来反映思考阶段,用子类(class)来反映实现阶段。
从上文易于得出:“思考-实现"是接口、抽象类的简单语义。从此观点出发,结合生活实际,可以方便回答许多待解答的问题,具体如下。
为什么接口、抽象类不能示例化?由于接口、抽象类是思考的结果,只是提出了哪些问题需要解决,无需函数体具体内容,当然不能示例化了。
为什么接口、抽象类必须由子类实现?提出问题之后,总得有解决的方法。Java 语言是通过子类来实现的,当然一 -定要解决“思考”过程中提出的所有问题。
接口、抽象类有什么区别?可以这样考虑,人类经思考后提出的问题一般有两类:一类是“顺序"问题,另一类是“顺序+共享"问题。前者是用接口描述的,后者是用抽象类来描述的。
图1-1所示为一个生产小汽车具体的接口示例。
图1-1 (a)所示为生产小汽车可由钢板切割、压模、组装、喷漆4个工序组成。这些工序是顺序关系,因此转化成接口是最恰当的,如图1-1 (b)所示。
图1-1生产小汽车接口示例
反射
反射的概念:
Java反射(JavaReflection)是指在程序运行时获取已知名称的类或已有对象的相关信息的一_种机制,包括类的方法、属性、父类等信息,还包括示例的创建和示例类型的判断等。在常规程序设计中,我们调用类对象及相关方法都是显示调用的。例如
public class A{
vold func() { }
public statie vold main(String []args){
A obj= new A();
obj. func();
}
}
那么能否根据类名A,①列出这个类有哪些属性和方法,②对于任意一个对象,调用它的任意- -个方法?这也是“反过来映射- -反射”的含义。
在JDK中,主要由以下类来实现Java反射机制,这些类都位于jav.langreflect包中。
●Class类:代表一个类。
●Constructor 类:代表类的构造方法。
●Field 类:代表类的成员变量(成员变量也称为类的属性)。
●Method 类:代表类的方法。
因为章节太多,我就不一一给大家介绍了,大家可以自己拿到手然后去看吧!
大家转发关注小编,+V X 17835068576 来拿走啦~~~~
网友评论