Java程序设计(理论部分)

上传人:宝路 文档编号:20891421 上传时间:2017-11-22 格式:DOC 页数:13 大小:62.62KB
返回 下载 相关 举报
Java程序设计(理论部分)_第1页
第1页 / 共13页
Java程序设计(理论部分)_第2页
第2页 / 共13页
Java程序设计(理论部分)_第3页
第3页 / 共13页
Java程序设计(理论部分)_第4页
第4页 / 共13页
Java程序设计(理论部分)_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《Java程序设计(理论部分)》由会员分享,可在线阅读,更多相关《Java程序设计(理论部分)(13页珍藏版)》请在金锄头文库上搜索。

1、- 1 -第一章 程序设计基础1.什么是程序设计?软件开发的过程,基本上是先分析需要解决的问题(用户需求) ,找出解决的办法,然后把解决办法用相应的程序语言进行表达(也就是编写程序) ,最后使用编好的程序去解决问题的这么个过程。而所谓的程序设计,指的就是:在软件开发的过程中,如何找出解决问题的方法,找到办法过后,如何合理的划分程序结构,合理的组织程序代码,这样的一个过程就是程序设计。2.程序设计能干什么?好的程序设计能让程序:更好的完成用户的需求功能;有更合理的程序架构;更好的程序性能;更好的复用性;更好的可扩展性、可维护性、可配置性、可伸缩性;更好的健壮性;更好的稳定性等等。3.Java 程

2、序设计的基本原则3.1 面向接口编程这是 Java 编程里面大家公认的第一原则,接口是一种特殊的抽象类,接口里面的方法全部是抽象方法;给出一个定义,不管具体实现;接口的功能:实现封装、隔离,接口对外,功能块的外观,具体实现隔离;用类实现接口。3.2 优先使用对象组合而非类继承Java 仅能单继承,不能实现多继承。对象组合:灵活采用对象组合进行方法引用。- 2 -3.3 分层问题分解,将大问题分解成诸多小问题,不断分解,直至可解决。最典型的三层架构,表现层-逻辑层-数据层表现层功能:展示数据、人机交互、收集参数调用逻辑层逻辑层功能:进行数据的逻辑校验、进行逻辑判断、实现业务功能、处理相关功能、处

3、理后续流程、组织数据返回给表现层。数据层功能:实现数据持久化、实现对象和持久化数据的双向映射。3.4 层间交互的基本原则3.4.1 表现层调用逻辑层逻辑层调用数据层,不可以反过来。3.4.2 层间交互也应该通过接口进行调用,以确保各层的实现独立变化。3.5 开闭原则简单点说就是新增开放,对修改关闭。而且应尽量做到不用修改模块的源代码,就能更改模块的行为。3.6 依赖性倒置原则这个原则就是依赖抽象而不要依赖具体的实现。3.7 接口隔离原则这个原则就是不要使用通用的接口,而是为不同的用户使用不同的接口。3.8 替换原则- 3 -这个原则就是子类应当可以替换父类并出现在父类能够出现的任何地方。4.类

4、设计的基本经验4.1 类要单一 类不要设计成大杂烩4.2 加强内聚,松散耦合尽量内部解决问题,加强内部实现;设计是一种平衡的艺术,不要仅考虑一点4.3 好的封装性(属性、方法)4.4 类的粒度要合理(类的方法不要超过 100 行)4.5 实现类不能依赖实用类4.6 应考虑灵活性,也就是可配置(特性:可以通过修改配置文件来选择系统提供的功能;功能是预先做好的) 、可维护(设计指标:系统可方便的修改已有的功能,改 Bug,Bug:系统的实际运行情况与实际不一致)4.7 要考虑性能(资源CPU、内存耗得少,速度快) ,考虑可伸缩性(性能不变的情况下,系统可支持的并发用户数与机器个数成正比,正态分布)

5、 ,软件要适应用户人数的变化,性能伸缩也有顶点。4.8 要考虑今后可能的变化,也就是可扩展性4.9 要考虑合理的复用(复用的好处:节省开发时间。极端分子不可做设计,玩的是危险的平衡的艺术;100%的好是不可能的,如何的合理:具体问题具体分析)4.9 要合理的考虑接口和抽象类的使用- 4 -4.10 尽量减少类与协作类的交互次数和交互信息的量4.11 父类不应该知道子类的信息,子类必须知道父类的信息4.12 更多的使用类的组合,而不是继承4.13 访问对象必须通过接口,不能绕过接口直接去访问第二章 设计模式基础1.什么是模式?从字面上理解,模:就是模型、模版的意思,式:就是方式、方法意思。综合起

6、来所谓模式就是:可以当作模型或模版的方式方法。再直白点说就是可以用来当成样板被参考的方式方法,类似于大家熟悉的范例。按照上面的理解,设计模式就是指的设计方面的模式,也就是设计方面的方式方法。2.设计模式是解决方案所谓解决方案,就是解决方法,或者是解决的方式。3.设计模式是用于解决特定环境下、重复出现的特定问题的解决方案特定环境:任何问题都是在某些场景下才会出现特定问题:说明这个解决方案不是什么问题都能解决,只能解决某些特定的问题重复出现:这样把解决方案总结出来才有意义,以后还可以继续使用。- 5 -4.设计模式是经过验证的,用于解决特定环境下、重复出现的特定问题的解决方案。经过验证,说明这个设

7、计模式是相对比较优秀的方案,是可行的方案,这样才具有学习、研究和使用的价值。5.设计模式的理解5.1 是一些解决问题的方法,当然主要是设计方面的,重在思想和方法上。5.2 是经验的积累,从理论上说,设计模式并不一定是最好的,可能有比设计模式更好的解决方案。5.3 设计模式并不是一成不变的,是在不断的发展中的5.4 设计模式并不是软件业独有,各行各业都有自己的模式6.设计模式能干什么设计模式能让我们复用一些相对优先的解决方案,从而让程序设计得比较精良,还能够加快程序的设计和开发。7.设计模式有什么描述一个设计模式,通常包含如下四个部分:模式名称:就是为每个设计模式取个名字,好记忆好交流环境和问题

8、:描述在什么场景下,出现什么样的特定的问题解决方案:描述如何解决这个问题效果:描述模式可能带来的问题,或者使用中需要权衡的问题还有另外一种分法:Java 设计模式:就是 GoF设计模式:可复用面向对象软件的- 6 -基础一书中提到的 23 种。JEE 核心设计模式:sun 的J2EE 核心设计模式一书中提到的 15 种EJB 设计模式实时设计模式:就是实时系统设计模式多线程(网络、Swing 等等)设计模式等等。8.为什么要学习设计模式?8.1 设计模式都是一些相对优秀的解决方案,很多问题都是典型的、有代表性问题,学习设计模式,我们就不用自己从头来解决这些问题,相当于站在巨人的肩膀上,复用这些

9、方案即可。8.2 设计模式已经成为专业人士的常用词汇,不懂不利于交流。8.3 能让你设计的系统更加专业,让系统有更好的架构。9. 学习设计模式的层次9.1 基本入门型套用能够正确理解和掌握每个设计模式的知识,能够识别在什么场景下,出现了什么特定问题,并且知道如何解决它,然后能在程序设计和开发中套用设计模式的方案。9.2 基本掌握级可变形使用型(根据实际问题变通使用)9.3 真正理解和掌握级思想上吸收和趋同型人剑合一,无招胜有招。思想上吸收:出手就这样,向大师学习。理论指导实践,实践中领悟。- 7 -10. 设计模式怎样解决设计问题10.1 寻找合适的对象面向对象设计最困难的部分是将系统分解成对

10、象集合。因为要考虑许多因素:封装、粒度、依赖关系、灵活性、性能、演化(可维护性、可扩展性等) 、复用等等,它们都影响着系统的分解,并且这些因素通常还是互相冲突的。10.2 决定对象的粒度10.3 指定对象接口在面向对象系统中,接口是基本的组成部分。对象只有通过它们的接口才能与外部交流。设计模式通过确定接口的主要组成成分及经接口发送的数据类型,来帮助你定义接口。设计模式也许还会告诉你接口中不应该包括哪些东西。设计模式也指定了接口之间的关系。10.4 描述对象的实现10.5 设计应支持变化获得最大限度复用的关键在于对新需求和已有需求发生变化时的预见性,需求你的系统设计要能够相应地改进。为了设计适应

11、这种变化、且具有健壮性的系统,你必须考虑系统在它的生命周期内会发生怎样的变化。一个不考虑系统变化的设计在将来就有可能需要重新设计。这些变化可能是类的重新定义和实现,修改客户和重新测试。重新设计会影响软件系统的许多方面,并且未曾料到的变化总是代价巨大的。- 8 -设计模式可以确保系统能以特定方式变化,从而帮助你避免重新设计系统。每一个设计模式允许系统结构的某个方面的变化独立于其它方面,这样产生的系统对于某一种特殊变化将更健壮。第三章 框架的基本概念1.框架是什么?框架是能完成一定功能的半成品软件。2.框架能干什么?2.1 能完成一定功能,加快程序开发进度。2.2 给我们一个精良的程序架构。3.框

12、架的理解无框架时全部自己实现,有框架时在框架之上进行开发。3.1 使用框架,事情还是那些事情,只是看谁做的问题;3.2 使用框架,可以不去做框架所做的事情,但是不可以不懂框架在干什么,以及框架如何实现的。我们做点,框架做点,交替将问题解决。看代码永远看不出,必须自己写。框架把人“废”掉了。4.框架和设计模式的关系4.1 设计模式比框架更抽象框架能够用代码表示,而设计模式只有其实例才能表示为代码。框架的威力在于它们能够使用程序设计语言写出来,它们不仅能被- 9 -学习,也能被直接执行和复用。4.2 设计模式是比框架更小的体系结构元素一个典型的框架包括了多个设计模式,而反之绝非如此。4.3 框架比

13、设计模式更加特例化框架总是针对一个特定的应用领域,而设计模式更加注重从思想上,从方法上来解决问题,更加通用化。第四章 设计模式单例1. 场景和问题在 Java 程序中,如何确保在运行期间,某个类只有一个实例。2. 解决方案方案 1:以时间换空间;代码复杂;线程不安全;体现延迟装载思想;注:一般情况下内存是有限的,更宝贵,而时间慢点没关系;public class A/5:用来保存自己的类实力/6:强迫使用“static”private static A a=null; (static:被迫使用)/1:首先收回外部能够 new A()的权限private a()- 10 -/2:主动给外部的调用

14、提供自己的实例。/3:public static A getInstance()/4:想办法内部控制调用构造方法的次数(1 次)/7:只在第一次调用时 new 一个if(a=null)/8:a=new A();/9:return a方案 2:以空间换时间;代码简洁;线程安全。static:仅加载一次(初始化一回) ,static 共用一个内存空间。静态变量仅初始化一次;装载没有并发之说。方案 2 采用类装载的功能,类装载的功能是虚拟机的功能。/5:private static A a=new A();/1:收回外部能够 new A()的权限private a()/2:主动给外部调用提供自己的实

15、例- 11 -/3public static A getInstance()/4:想办法内部控制调用构造方法的次数(1 次)/6:直接返回return a;3.单例模式的本质:控制实例的数目。4.单例模式体现的一些思想4.1 延迟装载(Lazy Load):不得不用的时候才使用。4.2 缓存:用空间换时间,将频繁使用的数据放在内存中进行处理。Java 中如何定义缓存:/1:定义用来缓存数据的容器(一般来说是集合)private static Map map=new HashMap();public static A getInstance2()/1:到缓存里面查找需要使用的数据A a=(A)m

16、ap.get(“one”);/2:如果找不到if(a=null)/2.1 就创建一个数据(或者获取一个数据)a=new A();- 12 -/2.2 然后把新的数据设置回到缓存中map.put(“one”,a);/3:如果找到了就直接使用return a;4.单例模式的变形使用/1:定义用来缓存数据的容器(一般来说是集合)private static Map map=new HashMap();/用来记录当前正在使用哪一个实例,初始化为 1private static int num=1;/用来记录需要控制的实例的总数为 3 个private static int count=3;public static A getInstance2()/1:到缓存里面查找需要使用的数据A a=(A)map.get(num);/2:如果找不到if(a=nu

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号