java设计模式问答题

java设计模式问答题
java设计模式问答题

工厂系列模式的优缺点:

1.让用户的代码和某个特定类的子类的代码解耦

用户不必知道它所使用的对象是怎样创建的,只需知道该对象有哪些方法

2.抽象工厂模式可以为用户创建一系列相关的对象,使用户和创建这些对象的类脱耦

MVC模式是不是一种设计模式?为什么

MVC不是设计模式,应该是框架/架构模式,因为它的定义是抽象的,没有足够的细节描述使你直接去实现,而只能根据MVC的概念和思想,用几个设计模式组合实现。

举出一个生活中使用装饰者模式的例子,用程序实现思路

举个生活中的例子,俗话说“人在衣着马在鞍”,把这就话用装饰者模式的语境翻译一下,“人通过漂亮的衣服装饰后,男人变帅了,女人变漂亮了;”。对应上面的类图,这里人对应于ConcreteComponent,而漂亮衣服则对应于ConcreteDecorator;

设计模式如何分类,每一个类别都有什么特征?

设计模式分为3类,分别是:创建型模式、行为型模式、结构型模式。

创建型特点:避免用户直接使用new运算符创建对象。

行为型特点:怎样合理的设计对象之间的交互通信,以及怎样合理的为对象分配职

结构型特点:

Java jdk中使用了哪些设计模式

1.单例

2.静态工厂

3.工厂方法

4.抽象工厂

5.构造者

6.原型

7.适配器8桥接9.组

合10.装饰器11.外观12.享元14.代理15.迭代器16.观察者17.协调者18.模板

方法19.策略20.责任链21.命令22.空对象25.解释器

面向对象的设计原则有哪些?

开闭原则、面向抽象的原则(依赖倒转原则)、多用组合少用继承原则、高内聚-低耦合原则。

观察者模式的推拉有什么不同?使用场景

推,具体主题将变化后的数据全部交给具体观察者。场景:当具体主题认为具体观察者需要这些变换后的数据时,往往采用推数据方式;

拉,具体主题不将变化后的数据交给具体观察者,而是提供获得这些数据的方法。场景:当具体主题不知道具体观察者是否需要这些变换后的数据时,往往采用拉数据的方式。

策略模式和工厂模式有什么不同?

策略模式定义了一系列算法,将他们一个个封装,并且他们之间可以相互替换;工厂模式定义一个创建对象的接口,让子类决定实例化哪一个类

5观察者模式的推拉有什么不同?适用场景

现在要说的分歧在这里:

“推”的方式是指,Subject维护一份观察者的列表,每当有更新发生,Subject会把更新消息主动推送到各个Observer去。

“拉”的方式是指,各个Observer维护各自所关心的Subject列表,自行决定在合适的时间去Subject获取相应的更新数据。

“推”的好处包括:

1、高效。如果没有更新发生,不会有任何更新消息推送的动作,即每次消息推送都发生在确确实实的更新事件之后,都是有意义的。

2、实时。事件发生后的第一时间即可触发通知操作。

3、可以由Subject确立通知的时间,可以避开一些繁忙时间。

4、可以表达出不同事件发生的先后顺序。

缺点:精确性较差,不能保证能把信息送到客户器。

“拉”的好处包括:

1、如果观察者众多,Subject来维护订阅者的列表,可能困难,或者臃肿,把订阅关系解脱到Observer去完成。

2、Observer可以不理会它不关心的变更事件,只需要去获取自己感兴趣的事件即可。

3、Observer可以自行决定获取更新事件的时间。

4、拉的形式可以让Subject更好地控制各个Observer每次查询更新的访问权限。缺点:不能够及时获取系统的变更。

6策略模式和工厂模式有什么不同?

一般情况下,策略模式是为了解决的是策略的切换与扩展,更简洁的说是定义策略族,分别封装起来,让他们之间可以相互替换,策略模式让策略的变化独立于

使用策略的客户。可以应用的场景有优惠系统、工资计算系统等。而工厂模式主要解决的是资源的统一分发,将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。主要应用在多数据库选择,类库文件加载等。很明显的是策略模式是开放的,作为一个主体你的活动范围是全程的,大多数事情要你自己亲力亲为。而工厂模式作是封闭的,作为主体的你的活动范围是有限的,很多事情都帮组你做好了,你直接“点”就可以了。

7装饰者模式和适配器模式的比较

1.关于新职责:适配器也可以在转换时增加新的职责,但主要目的不在此。装饰者模式主要是给被装饰者增加新职责的。

2.关于原接口:适配器模式是用新接口来调用原接口,原接口对新系统是不可见或者说不可用的。装饰者模式原封不动的使用原接口,系统对装饰的对象也通过原接口来完成使用。(增加新接口的装饰者模式可以认为是其变种--“半透明”装饰者)

3.关于其包裹的对象:适配器是知道被适配者的详细情况的(就是那个类或那个接口)。装饰者只知道其接口是什么,至于其具体类型(是基类还是其他派生类)只有在运行期间才知道。

8为什么要用设计模式,设计模式有哪些优点

设计模式的优点:

1、设计模式融合了众多专家的经验,并以标准的形式给广大群众使用,她提供了一中通用的设计词汇,和一种通用的设计语言,以方便开发人员之间开发和交流,使得设计方案更加通俗易懂;

2、设计模式使人们可以方便简单的复用设计模式;

3、设计模式是设计方案易于修改;

4、设计模式的使用将提高软件开发效率与质量,节约成本;

5、设计模式有助于初学者理解面向对象的思想。

9学过的每一种模式的适用场景和优缺点

职责链模式

优点:

1.将请求的发送者和接收者解耦

2.可以简化你的对象,因为它不需要知道链的结构

3.通过改变链内的成员或调动他们的次序,允许你动态地新增或删除责任

缺点:

1.并不保证请求一定会被执行,如果没有任何对象处理它的话,它可能会落到链尾端

之外

2.可能不容观察运行时的特征,有碍于除错。

用途:

经常被使用在窗口系统中,处理鼠标和键盘之类的事件。

当算法牵涉到一种链型运算,而且不希望处理过程中有过多的循环和条件选择语句,并且希望比较容易的扩充文法,可以采用职责链模式。

1)有多个对象处理请求,到底怎么处理在运行时确定。

2)希望在不明确指定接收者的情况下,向多个对象中的一个提交请求。

3)可处理一个请求的对象集合应该被动态指定。

典型例子:

一个请求发送给前台,前台表示我无权管理,将请求传递给财务部门,财务部门再……简单工厂模式

优点:

工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件体系结构的优化。

缺点:

由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。

当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求.这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利;

用途:

工厂类负责创建的对象比较少;

客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;

由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。经典例子:没啥好说的,这不是一个真正的设计模式

策略模式

优点:

1.提供了一种替代继承的方法,而且保持了继承的优点,比继承更独立(算法独立,可

以任意扩展)

2.避免程序使用多重条件转移语句,使系统更灵活,并易于扩展

3.遵守大部分常用设计原则,高内聚,低耦合

缺点:

1.每个具体策略类都会产生一个新类,所以会增加系统需要维护的类的数量。可以使

用工厂方法来解决。

用途:

各个不同地区不同的纳税方法,HF中不同鸭子的方法。有多种鸭子,每个鸭子都有自己的行为,fly,quaak之类的。行为有行为类,继承同一接口实现不同操作,以此实现算法互换。

装饰模式

优点:

1.装饰模式与继承关系的目的都是要扩展对象的功能,但是装饰模式可以提供比继承

更多的灵活性。

2.通过使用不同的具体装饰类以及这些装饰类的排列组合,设计师可以创造出很多不

同行为的组合。

3.有着比继承更加灵活的特性

缺点:

由于使用装饰模式,可以比使用继承关系需要较少数目的类。使用较少的类,当然使设计比较易于进行。但是,在另一方面,使用装饰模式会产生比使用继承关系更多的对象。更多的对象会使得查错变得困难,特别是这些对象看上去都很相像。

用途:

当需要给一个类添加新的行为的时候,但基于开闭原则,就使用装饰模式。

经典例子:

我穿衣服使用draw()方法,在我穿好衣服后,我还打算再寄领带,而寄领带就是装饰类,我们可以把装饰类和对象(穿衣服类)继承于同一个接口,在装饰类的draw()方法中调用super.draw(),然后再在这个方法里加上自己的特征。

工厂方法模式

优点:

1.良好的封装性,代码结构清晰。一个对象创建是有条件约束的,如一个调用者需要

一个具体的产品对象,只要知道这个产品的类名(或约束字符串)就可以了,不用

知道创建对象的艰辛过程,减少模块间的耦合。

2.工厂方法模式的扩展性非常优秀。在增加产品类的情况下,只要适当地修改具体的

工厂类或扩展一个工厂类,就可以完成“拥抱变化”。例如在我们的例子中,需要

增加一个棕色人种,则只需要增加一个BrownHuman类,工厂类不用任何修改就可

完成系统扩展。

3.屏蔽产品类。这一特点非常重要,产品类的实现如何变化,调用者都不需要关心,

它只需要关心产品的接口,只要接口保持不表,系统中的上层模块就不要发生变化,因为产品类的实例化工作是由工厂类负责,一个产品对象具体由哪一个产品生成是

由工厂类决定的。在数据库开发中,大家应该能够深刻体会到工厂方法模式的好处:如果使用JDBC连接数据库,数据库从MySql切换到Oracle,需要改动地方就是切

换一下驱动名称(前提条件是SQL语句是标准语句),其他的都不需要修改,这是

工厂方法模式灵活性的一个直接案例。

4.工厂方法模式是典型的解耦框架。高层模块值需要知道产品的抽象类,其他的实现

类都不用关心,符合迪米特原则,我不需要的就不要去交流;也符合依赖倒转原则,只依赖产品类的抽象;当然也符合里氏替换原则,使用产品子类替换产品父类,没

问题!

缺点:待补充

用途:

第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来。Java Collection中的iterator() 方法即属于这种情况。

第二种情况,只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。

典型例子:

车子继承vehicle(车)类,有小汽车卡,公交车bus等,车子工厂实现工厂接口,工厂接口有抽象方法vehicle produce vehicle(String type)方法,车子工厂中实现工厂方法vehicle produce vehicle(String Type),方法中根据需要new新的车子。

观察者模式

优点:

1.观察者和被观察者之间是松耦合的,分别可以各自独立改变。

2.Subject在发送广播通知的时候,无须指定具体的Observer,Observer可以自己决定

是否要订阅Subject的通知。

3.遵守大部分GRASP原则和常用设计原则,高内聚、低耦合。

缺点:

1.松耦合导致代码关系不明显,有时可能难以理解。

2.如果一个对象被大量观察者订阅的话,在广播通知的时候可能会有效率问题。(毕

竟只是简单的遍历)

使用场景

1、对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。

2、对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。

经典例子:

看电视,天气预报

看新闻联播,观众们是观察者,新闻联播是对象,每个观察者都继承于一个统一的接口。而被观察的对象是新闻联播,新闻联播可以添加新的观察者,或者当移除观察者(关电视不看),新闻联播对象有个通知用户信息变更方法,当达到某种条件是,新闻联播对象会将信息都通知给观察者。

抽象工厂模式

优点:

1.抽象工厂模式隔离了具体类的生产,使得客户并不需要知道什么被创建

2.当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一

个产品族中的对象

3.增加新的具体工厂和产品族很方便,无须修改已有系统,符合“开闭原则”

缺点:

增加新的产品等级结构很复杂,需要修改抽象工厂和所有的具体工厂类,对“开闭原则”的支持呈现倾斜性。

用途:

1、一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有类

型的工厂模式都是重要的。

2、系统中有多于一个的产品族,而每次只使用其中某一产品族。

3、属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现出来。

4、系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于

具体实现。

经典例子:

抽象工厂在我的理解就是抽象工厂有两个或两个个以上的工厂方法模式结合,有一个工厂接口类,这个接口有中的产品家族有发动机和轮胎两个产品。有两个具体工厂,米其林工厂和倍耐力工厂实现了抽象工厂。

米其林工厂生产的轮胎都继承于米其林轮胎,同理米其林发动机和倍耐力产品。适配器模式

优点:

1.将目标类和适配者类解耦

2.增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说

是透明的,而且提高了适配者的复用性

3.灵活性和扩展性都非常好,符合开闭原则

缺点:

一次最多只能适配一个适配者类,而且目标抽象类只能为接口,不能为类,其使用有一定的局限性,不能将一个适配者类和他的子类同时适配到目标接口。

用途:

想使用一个已经存在的类,但如果它的接口和你的要求不相同时。可以使用适配器模式。两个类所做的事情相同或相似,但接口不同时可以使用。

经典例子:

不同牌子电视机和不同牌子遥控器,里皮翻译用汉语布置恒大队员战术,不同牌子手机的软件。

球员都继承于中国人,都会说汉语,而里皮并不会说汉语。在不知战术的时候,我们需要给里皮一个翻译,这个翻译就是里皮的适配器。翻译可以和球员一样,也继承于中国人,也有说汉语这个方法。而翻译认识里皮,翻译在说汉语()这个方法的时候,实际上是在说里面用意大利语的内容。

单例模式

优点:

1.实例控制,单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所

有对象都访问唯一实例。

2.灵活性,因为类控制了实例化过程,所以类可以灵活更改实例化过程。

缺点:

1.可能的开发混淆,使用单例对象(尤其在类库中定义的对象)时,开发人员必须记

住自己不能使用new 关键字实例化对象。因为可能无法访问库源代码,因此应用

程序开发人员可能会意外发现自己无法直接实例化此类。

2.不能解决删除单个对象的问题。在提供内存管理的语言中(例如基于.NET Framework

的语言),只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用。

在某些语言中(如C++),其他类可以删除对象实例,但这样会导致单例类中出现

悬浮引用。

用途:

系统只需要一个实例的对象,而这个对象又会被经常创建。

典型例子:

数据库类里的Model,例如User,表单中显示用户信息会经常使用User.Update之类的方法,此时使用单例模式可以节省效率。

Java 基础知识问答题 包含的模块 本文分为十九个模块,分别是:Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM,如下图所示:

共包含208 道问答题,本文的宗旨是为读者朋友们整理一份基础知识的简单大纲,下面一起进入主题吧。 Java 基础 1. JDK 和JRE 有什么区别?

?JDK:Java Development Kit 的简称,Java 开发工具包,提供了Java 的开发环境和运行环境。 ?JRE:Java Runtime Environment 的简称,Java 运行环境,为Java 的运行提供了所需环境。 具体来说JDK 其实包含了JRE,同时还包含了编译Java 源码的编译器Javac,还包含了很多Java 程序调试和分析的工具。简单来说:如果你需要运行Java 程序,只需安装JRE 就可以了,如果你需要编写Java 程序,需要安装JDK。 2. == 和equals 的区别是什么? == 解读 对于基本类型和引用类型== 的作用效果是不同的,如下所示: ?基本类型:比较的是值是否相同; ?引用类型:比较的是引用是否相同; 代码示例: String x = "string"; String y = "string"; String z = new String("string"); System.out.println(x==y); // true System.out.println(x==z); // false System.out.println(x.equals(y)); // true System.out.println(x.equals(z)); // true 代码解读:因为x 和y 指向的是同一个引用,所以== 也是true,而new String()方法则重写开辟了内存空间,所以== 结果为false,而equals 比较的一直是值,所以结果都为true。 equals 解读

软件设计模式(Java版)习题 第1章软件设计模式基础 1.1 软件设计模式概述 1.2 UML中的类图 1.3 面向对象的设计原则 一、名词解释 1.一个软件实体应当对扩展开放,对修改关闭,即在不修改源代码的基础上扩展 一个系统的行为。 2.一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。 3.在软件中如果能够使用基类对象,那么一定能够使用其子类对象。 4.是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结, 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 二、单选择题 1.( A ) 2.( A ) 3. ( A ) 4. ( D ) 5. ( D ) 6.( A ) 7. ( D ) 8.( D ) 9.( D ) 10.( E ) 11.( C ) 12.( C ) 13. ( A ) 三、多选择题 1.( A、B、C、D ) 2. ( A、B ) 3.( A、D ) 4.( A、B、C、D ) 四、填空题 1.依赖倒转、迪米特法则、单一职责 2.模式名字、目的、问题、解决方案、效果、实例代码 3.超类、子类 4.开闭 5.用户 6.依赖倒转 7.组合/聚合 8.结构型、行为型 9.依赖倒转 10.开闭 11.需求收集是否正确、体系结构的构建是否合理、测试是否完全 12.人与人之间的交流 13.接口 14.名称、目的、解决方案 15.对象组合、类继承

16.对象组合 17.对象组合、类继承 18.抽象类的指针 五、简答题 1.答:设计模式按类型分为以下三类: 1)创建型设计模式:以灵活的方式创建对象集合,用于管理对象的创建。 2)结构型设计模式:将己有的代码集成到新的面向对象设计中,用于处理类或对象的组合。 3)行为型设计模式:用于描述对类或对象怎样交互和怎样分配职责。 2.答:设计模式的主要优点如下: 1)设计模式融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,它提供了一套通用的设计词汇和一种通用的语言以方便开发人员之间沟通和交 流,使得设计方案更加通俗易懂。 2)设计模式使人们可以更加简单方便地复用成功的设计和体系结构,将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式使得重用成功的设计更加容易,并避免那些导致不可重用的设计方案。 3)设计模式使得设计方案更加灵活,且易于修改。 4)设计模式的使用将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本。 5)设计模式有助于初学者更深入地理解面向对象思想,一方面可以帮助初学者更加方便地阅读和学习现有类库与其他系统中的源代码,另一方面还可以提高软件的设计水平和代码质量。 3.答:设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效 果、实例代码和相关设计模式,其中的关键元素包括模式名称、问题、解决方案和效果。 4.答:正确使用设计模式具有以下优点: ⑴可以提高程序员的思维能力、编程能力和设计能力。 ⑵使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从 而缩短软件的开发周期。 ⑶使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。 5.答:根据类与类之间的耦合度从弱到强排列,UML中的类图有以下几种关系:依赖关 系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。

《JAVA设计模式》复习资料 一、单项选择题 1.设计模式起源于() A、机械设计 B、建筑工程设计 C、水利工程设计 D、工业电力化设计 2.“不要和陌生人说话”是()原则的通俗表述。 A、接口隔离 B、里氏替换 C、依赖倒置 D、迪米特 3.目前常见的设计模式主要有()种。 A、23 B、21 C、32 D、28 4.以下关于单一职责原则的叙述不正确的是()。 A、单一职责原则的英文名称是Single Responsibility Principle. B、单一职责原则要求一个类只有一个职责 C、单一职责原则有利于对象的稳定,降低类的复杂性 D、单一职责原则提高了类之间的耦合性 5.以下关于依赖倒置原则的叙述不正确的是() A、依赖倒置原则的简称是DIP B、高层模块不依赖于低层模块,低层模块依赖于高层模块 C、依赖倒置原则中高层模块和低层模块都依赖于抽象 D、依赖倒置原则实现模块间的松耦合 6.下面关于单例模式说法错误的是() A、单例模式是指一个类只有一个实例 B、单例类从实现方式上分为懒汉式和饿汉式 C、单例类从功能上分为状态单例类和无状态单例类 D、可以通过继承的方式对单例类进行扩展得到功能更丰富的单例类 7.下面关于工厂方法模式说法错误的是()。 A、工厂方法模式使一个类是实例化延迟到其子类中 B、工厂方法模式中具有抽象工厂、具体工厂、抽象产品和具体产品4个角色 C、工厂方法模式可以处理多个产品的多个等级结构 D、工厂方法模式可以屏蔽产品类 8.在以下情况不适合使用责任职责链模式() A、有多个对象可以处理请求,哪个对象处理该请求在运行时刻自动确定。 B、在需要用比较通用和复杂的对象指针代替简单的指针的时候。 C、你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 D、一个请求需要一系列的处理工作。 9.当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式 A、结构型 B、创建型 C、行为型 D、以上都可以 10.以下用来描述适配器模式的是() A、表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 B、定义一个用于创建对象的接口,让子类决定实例化哪一个类。 C、将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些

《JA V A语言程序设计》期末考试试题及答案1(应考必备题库) 一、单选择题 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。 A. java B. .class C. html D. .exe 2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( A )。 A. 3 B. 3. 5 C. 4 D. 5 3、不允许作为类及类成员的访问控制符的是( C )。 A. public B. private C. static D. protected 4、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A )。 A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) 二、填空题 1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、 编译生成字节码和解释运行字节码。 2、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占 用2字节内存空间,这样,无论是中文字符还是英文字符,都是占 用2字节内存空间。 3、设x = 2 ,则表达式( x + + )/3 的值是0 。 4、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为true和false。 5、抽象(abstract) 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。最终(final)方法是不能被当前类的子类重新定义的方法。 6、创建一个名为MyPackage 的包的语句是package MyPackage ; , 该语句应该放在程序的位置为:应该在程序第一句。 7、设有数组定义:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70}; 则执行以下几个语句后的输出结果是120。

工厂系列模式的优缺点: 1.让用户的代码和某个特定类的子类的代码解耦 用户不必知道它所使用的对象是怎样创建的,只需知道该对象有哪些方法 2.抽象工厂模式可以为用户创建一系列相关的对象,使用户和创建这些对象的类脱耦 MVC模式是不是一种设计模式?为什么 MVC不是设计模式,应该是框架/架构模式,因为它的定义是抽象的,没有足够的细节描述使你直接去实现,而只能根据MVC的概念和思想,用几个设计模式组合实现。 举出一个生活中使用装饰者模式的例子,用程序实现思路 举个生活中的例子,俗话说“人在衣着马在鞍”,把这就话用装饰者模式的语境翻译一下,“人通过漂亮的衣服装饰后,男人变帅了,女人变漂亮了;”。对应上面的类图,这里人对应于ConcreteComponent,而漂亮衣服则对应于ConcreteDecorator; 设计模式如何分类,每一个类别都有什么特征? 设计模式分为3类,分别是:创建型模式、行为型模式、结构型模式。 创建型特点:避免用户直接使用new运算符创建对象。 行为型特点:怎样合理的设计对象之间的交互通信,以及怎样合理的为对象分配职 结构型特点:主要用于处理类或对象的组合 Java jdk中使用了哪些设计模式 1.单例 2.静态工厂 3.工厂方法 4.抽象工厂 5.构造者 6.原型 7.适配器8桥接9.组合10.装饰器11.外观12.享元 页脚内容1

14.代理15.迭代器16.观察者17.协调者18.模板方法19.策略20.责任链21.命令22.空对象25.解释器 面向对象的设计原则有哪些? 开闭原则、面向抽象的原则(依赖倒转原则)、多用组合少用继承原则、高内聚-低耦合原则。 观察者模式的推拉有什么不同?使用场景 推,具体主题将变化后的数据全部交给具体观察者。场景:当具体主题认为具体观察者需要这些变换后的数据时,往往采用推数据方式; 拉,具体主题不将变化后的数据交给具体观察者,而是提供获得这些数据的方法。场景:当具体主题不知道具体观察者是否需要这些变换后的数据时,往往采用拉数据的方式。 策略模式和工厂模式有什么不同? 策略模式定义了一系列算法,将他们一个个封装,并且他们之间可以相互替换; 工厂模式定义一个创建对象的接口,让子类决定实例化哪一个类 5观察者模式的推拉有什么不同?适用场景 现在要说的分歧在这里: “推”的方式是指,Subject维护一份观察者的列表,每当有更新发生,Subject会把更新消息主动推送到各个Observer去。 “拉”的方式是指,各个Observer维护各自所关心的Subject列表,自行决定在合适的时间去Subject获取相应的更新数据。 “推”的好处包括: 页脚内容2

《Java语言程序设计基础教程》 练习思考题参考答案 第1章Java程序设计概述 1、1单项选择题 1.编译Java Application源文件将产生相应得字节码文件,扩展名就是什么 A、、java ???? B、、class ?C、、html??? D、、exe 解答:B 2.Java语言具有许多优点与特点,下列选项中,哪个反映了Java中“一次编 译,随处运行”得特点. ?A、简单性????B、平台无关性 C、面向对象性???? D、安全性 解答:B 3.Java语言具有许多优点与特点,下列选项中,哪个反映了Java中并行机制得 特点。 ?A、多线程???B、平台无关性 C、面向对象性??? D、安全性 解答:A 4。在Java语言中,下列哪些语句关于内存回收得说明就是正确得? ?A.程序员必须创建一个线程来释放内存; B.内存回收程序负责释放无用内存; C.内存回收程序允许程序员直接释放内存; D.内存回收程序可以在指定得时间释放内存对象 解答:B 5.一个Java源文件中最多只能有多少个public类。 ?A、1个?B、2个

C、3个? D、任意多个 解答:A 6。下面哪一个不就是Java语言所具有得特点。 A、没有全局变量,在类得定义外部没有任何得变量定义; ?B、不直接支持指针操作,而使用更安全得引用类型; C、支持子类对父类得多继承; D、具有自动垃圾收集功能; 解答:C 7。下面哪一个不就是Java开发工具包JDK得组成部分. ?A、Java得编译器; B、Java得解释器;? ?C、Java得API继承类库; ?D、Eclipse开发工具; 解答:C 8。JDK提供得编译器就是()。 ?A、java、exe???B、javac、exe C、javap、exe??? D、javaw、exe 解答:B 9。作为Java应用程序入口得main方法,其声明格式可以就是() A、public voidmain(String[]args) B、public static void main(String []args) C、public static void Main(String* args) D、public int main(String []args) 解答:B 10.下列说法正确得就是( A ) A、JAVA程序得main方法必须写在类里面 B、JAVA程序中可以有多个main方法 C、JAVA程序中类名必须与文件名一样 D、JAVA程序得main方法中如果只有一条语句,可以不用{}(大括号)括起来 11。下列哪些语句关于Java内存回收得说明就是正确得? ( B) A、程序员必须创建一个线程来释放内存

《J A V A设计模式》复习资料 一、单项选择题 1.设计模式起源于() A、机械设计 B、建筑工程设计 C、水利工程设计 D、工业电力化设计 2.“不要和陌生人说话”是()原则的通俗表述。 A、接口隔离 B、里氏替换 C、依赖倒置 D、迪米特3.目前常见的设计模式主要有()种。 A、23 B、21 C、32 D、28 4.以下关于单一职责原则的叙述不正确的是()。 A、单一职责原则的英文名称是SingleResponsibilityPrinciple. B、单一职责原则要求一个类只有一个职责 C、单一职责原则有利于对象的稳定,降低类的复杂性 D、单一职责原则提高了类之间的耦合性 5.以下关于依赖倒置原则的叙述不正确的是() A、依赖倒置原则的简称是DIP B、高层模块不依赖于低层模块,低层模块依赖于高层模块 C、依赖倒置原则中高层模块和低层模块都依赖于抽象 D、依赖倒置原则实现模块间的松耦合 6.下面关于单例模式说法错误的是() A、单例模式是指一个类只有一个实例 B、单例类从实现方式上分为懒汉式和饿汉式 C、单例类从功能上分为状态单例类和无状态单例类 D、可以通过继承的方式对单例类进行扩展得到功能更丰富的单例类7.下面关于工厂方法模式说法错误的是()。 A、工厂方法模式使一个类是实例化延迟到其子类中 B、工厂方法模式中具有抽象工厂、具体工厂、抽象产品和具体产品4个角色 C、工厂方法模式可以处理多个产品的多个等级结构 D、工厂方法模式可以屏蔽产品类 8.在以下情况不适合使用责任职责链模式() A、有多个对象可以处理请求,哪个对象处理该请求在运行时刻自动确定。 B、在需要用比较通用和复杂的对象指针代替简单的指针的时候。 C、你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。 D、一个请求需要一系列的处理工作。 9.当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式 A、结构型 B、创建型 C、行为型 D、以上都可以 10.以下用来描述适配器模式的是()

第四章 命令模式 命令模式: 将一个请求封装为一个对象,从而使用户可用不同得请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作(在命令模式中,当一个对象请求另外一个对象调用其方法时,不和被请求的对象直接打交道,而是把这种请求封装到一个称为“命令”的对象中,其封装手段是将“请求”封装在一个命令对象的一个方法中,命令模式的核心就是使用命令对象来方法调用。) 命令模式的四个角色: 接收者(Receiver ):接收者是一个类的实例,负责执行与请求相关的操作 命令接口(Command ):命令是一个接口,规定了用来封装“请求”的若干个方法。如execute ()、undo ()。 具体命令(ConcreteCommand ):是实现命令接口的实例 请求者(Invoke ):是一个包含Command 接口变量的类的实现 单向关联 命令模式的优点: 1:请求者不与接收者直接交互联系(即请求者不包含接收者的引用),他们之间无耦合关系 2:满足开闭原则。如在增加新的具体命令和接收者时,不必修改请求者的代码,反之在增加新的请求者时,也不必修改具体命令和接收者的代码 3:由于请求者的请求被封装到了具体命令中,这个命令在需要时可重复使用,使用命令模式可以记录日志 4:使用命令模式可以是“请求”排队,因此可以按一定的顺序执行这些命令 第五章 观察者模式 观察者模式: 定义对象间一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都得到通知并自动更新。(观察者模式是关于多个对象 想知道一个对象中数据变化情况的一种成熟模式。观察者模式中有一个称为“主题”的对象和多个称作“观察者”的对象,“主题”和“观察者”间是一种一对多的依赖关系,当“主题”发生变化时,所有的“观察者”得到通知。) 《interface 》 Comman d +execute ():void Invoke command :Command +executeCommand ():void Receiver command:Command +action():void ConcreteCommand Receiver:Receiver +execute():void

Java程序设计期末考试试题、试卷、习题A卷 一、选择题。本题共20小题,每题2分,满分40 分。 1、在浏览器中执行applet 程序,以下选项中的哪个方法将被最先执行……… () A)init() B)start() C)destroy() D)stop() 2、有以下方法的定义,请选择该方法的返回类型() ReturnType method(byte x, double y) { return (short)x/y*2; } A)byte B)short C)int D)double 3、以下哪项可能包含菜单条()。 A)Panel B)Frame C)Applet D)Dialog 4、Java application中的主类需包含main方法,main方法的返回类型是什么?()A)int B)float C)double D)void 5、Java application中的主类需包含main方法,以下哪项是main方法的正确形参?( ) A)String args B)String ar[] C)Char arg D)StringBuffer args[] 6、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )。 A). java B) .class C) . html D) .exe 7、设int型变量x = 1 , y = 2 , z = 3,则表达式y+=z--/x++ 的值是( )。 A)3 B)3. 5 C)4 D)5 8、不允许作为类及类成员的访问控制符的是( )。 A)public B)private C)static D)protected 9、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( )。 A)static void method( ) B)public void method( ) C)final void method( ) D)abstract void method( ) 10、以下哪一个不是JAVA的标准数据流( )。 A)标准输出数据流B)标准输入数据流C)标准错误数据流D)标准运算数据流 11.设有下面两个赋值语句:( ) a = Integer.parseInt(“123”); b = Integer.valueOf(“123”).intValue(); 下述说法正确的是()。 A)、a是整数类型变量,b是整数类对象。B)、a是整数类对象,b是整数类型变量。C)、a和b都是整数类对象并且值相等。D)、a和b都是整数类型变量并且值相等。 12、下列代表十六进制整数的是( ) A)0123 B)1900 C)fa00 D)0xa2

Java设计模式笔记 一.单例模式 1.单例模式(Singleton)表示一个类只能生成一个对象。 2.典型应用:Servlet就是使用的单例模式,不管多少个用户 访问一个Servlet都是访问的一个Servlet对象。 3.对于单例模式实现的想法: 1)首先明确生成一个类的对象时肯定要调用该类的构造方法。 2)那么我们必须要从构造方法入手解决一个类只能生成一个对象这一问题。 3)假设不提供构造方法,该类会默认是一个不带参数的构造方法,显然生成该类对象时还是会调用默认 的构造方法,还是无法解决问题 4)则我们肯定是要通过提供构造方法来解决这一问题,那么现在我们的问题是到底该提供怎样的构造 方法呢? 5)那么我们就想到一般的构造方法都是public的,在类的外部(其他类)可以调用该构造方法生成多个 对象,显然是不行的,那么我们就想到private关键 字,private表示只能类的内部才能访问。 6)那么现在我们想到可以把构造方法定义成一个私有(private)的,只有该类的内部才能访问,但是在类

的外面不能生成对象了,这样成为零例了,与单例很接近了。 7)那么我们需要在该类中提供一个返回唯一一个该类的对象供外部调用。但是现在我们构造方法外部都不能访问,没有对象该怎么访问这个类的指定方法呢? 8)那么我们想到把我们提供的方法定义成静态方法(非实例方法),就可以直接通过该类加点号访问该类的该方法了。 9)那么我们可以举一个单例的例子了: class Singleton{ private static Singleton singleton=new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return singleton; } } 以上例子便是实现了单例模式,注意两个红色地方,静态的方法只能访问静态的属性。在类的外部直接通过类名加点号getInstance()访问唯一一个对象了。

1、设计模式一般用来解决什么样的问题( a) A.同一问题的不同表相 B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 2、下列属于面向对象基本原则的是( c ) A.继承 B.封装 C.里氏代换 D都不是 3、Open-Close原则的含义是一个软件实体( a ) A.应当对扩展开放,对修改关闭. B.应当对修改开放,对扩展关闭 C.应当对继承开放,对修改关闭 D.以上都不对 4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( a )模式。 A.创建型 B.结构型 C行为型 D.以上都可以 5、要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( d )的表述 A.开-闭原则 B.接口隔离原则 C.里氏代换原则 D.依赖倒转原则 6、依据设计模式思想,程序开发中应优先使用的是( a )关系实现复用。 A, 委派 B.继承 C创建 D.以上都不对 复用方式:继承和组合聚合(组合委派) 7、设计模式的两大主题是( d ) A.系统的维护与开发 B 对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 8、单子模式中,两个基本要点( a b )和单子类自己提供单例 A .构造函数私有 B.唯一实例 C.静态工厂方法 D.以上都不对 9、下列模式中,属于行为模式的是( b ) A.工厂模式 B观察者 C适配器以上都是 10、“不要和陌生人说话” 是( d )原则的通俗表述 A.接口隔离 B.里氏代换 C.依赖倒转 D.迪米特:一个对象应对其他对象尽可能少的了解 11、构造者的的退化模式是通过合并( c )角色完成退化的。 A.抽象产品 B产品 C创建者 D使用者

《JA V A程序设计》期末考试试题 汇总 (适用于计科11) 喻思远 2012-12-3

前言: 同学们,JA V A考试就要来咯,现在我给大家一份复习资料,这份资料是我从网上找的,是各高校历年的期末试题,然后经过我的删选而得的。主要题型是单选题,填空题,判断题,读程序题,写程序题。 其中需要注意注意的是,最后的写程序题,本套题目中相对较少,我们的期末考试考的写程序题应该是书上的原题,因此我过两天再给大家说下具体可能考的写程序题目。还有,这份题目中可能有些题目重复了或很相似,对于这种出现次数多的题目,同学们要更加引起重视。这个题库题目较多,不要求大家能够看完每道题,只希望把看到的掌握好。大家一定要结合课本来复习,毕竟这个题不是老师给的,不会像c++那样都是原题。 最后,我想说明一点,我给这个题库只是想给大家一个复习的思路,知道考什么知识点,然后进行复习。 加油,同学们,JA V A考试的成功一定会眷顾你!!!

《JA V A程序设计》期末考试试题(一) 一、单选择题 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。 A. java B. .class C. html D. .exe 2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( A )。 A. 3 B. 3. 5 C. 4 D. 5 3、不允许作为类及类成员的访问控制符的是( C )。 A. public B. privates C. static D. protected 4、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A )。 A. static void method( ) B. public void method( ) C. final void method( ) D. abstract void method( ) 二、填空题 1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、 编译生成字节码和解释运行字节码。 2、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占 用2字节内存空间,这样,无论是中文字符还是英文字符,都是占 用2字节内存空间。 3、设x = 2 ,则表达式( x + + )/3 的值是0 。 4、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为true和false。 5、抽象(abstract) 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。最终(final)方法是不能被当前类的子类重新定义的方法。 6、创建一个名为MyPackage 的包的语句是package MyPackage ; ,

一、1. 设计模式一般用来解决什么样的问题: A.同一问题的不同表相 2. 下列属于面向对象基本原则的是: C.里氏代换 3. Open-Close原则的含义是一个软件实体:A.应当对扩展开放,对修改关闭. 4. 当我们想创建一个具体的对象而又不希望指定具体的类时,使用(A)模式。A.创建型 5. 要依赖于抽象不要依赖于具体。即针对接口编程不要针对实现编程:(D)依赖倒转原则 6. 依据设计模式思想,程序开发中应优先使用的是( A )关系实现复用。A, 委派 7. 设计模式的两大主题是( D ) D.系统复用与系统扩展 8. 单体模式中,两个基本要点(AB)和单体类自己提供单例A .构造函数私有 B.唯一实例 9. 下列模式中,属于行为模式的是( B ) B观察者 10. “不要和陌生人说话”是( D )原则的通俗表述 D.迪米特 1. 软件体系结构是指一个系统的有目的的设计和规划,这个设计规划既不描述活动,也不描述系统怎样开发,它只描述系统的组成元素及其相互的交互协作。 2.一个UML模型只描述了一个系统要做什么,它并没告诉我们系统是怎么做。 3.接口是可以在整个模型中反复使用的一组行为,是一个没有属性而只有方法的类。 4.多重性指的是,某个类有多个对象可以和另一个类的一对象关联。 5.当一个类的对象可以充当多种角色时,自身关联就可能发生。 6.在泛化关系中,子类可以替代父类。后前者出现的可以相同地方。反过来却不成立。 7.最通常的依赖关系是一个类操作的形构中用到了另一个类的定义。 8.组成是强类型的聚集,因为聚集中的每个部分体只能属于一个整体。 9.实现的符号和继承的符号有相似之处,两者的唯一差别是实现关系用虚线表示,继承关系用实线表示。 10. 设计模式中应优先使用对象组合而不是类继承。 1.适配器模式属于创建型模式结构型( F ) 2.在设计模式中,“效果”只是指“原因和结果”( T ) 3.设计模式使代码编制不能真正工程化( T ) 4.面向对象语言编程中的异常处理,可以理解为责任链模式(T ) 5.反模式就是反对在软件开发过程中使用设计模式分析:反模式用来解决问题的带有共性的不良方法(F ) 1.什么是设计模式?设计模式目标是什么? 答:设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解,保证代码可靠性。 2.设计模式中一般都遵循的原则有什么? 答:开闭原则、根据场景进行设计原则、优先组合原则、包容变化原则 3.“Gang of Four”针对“创建优秀面向对象设计”建议了哪些策略? 答:针对接口编程、优先使用对象组合而不是类继承,找到并封装变化点。 4.面向对象系统中功能复用的两种最常用技术是什么? 答:类继承和对象组合,类继承允许你根据其他类的实现来定义一个类的实现。父类的内部细节对子类可见。 类继承是在编译时刻静态定义的,且可直接使用,类继承可以较方便地改变被复用的实现。对象组合是类继承之外的另一种复用选择。新的更复杂的功能可以通过组装或组合对象来获得。对象组合要求被组合的对象具有良好定义的接口。 5.只根据抽象类中定义的接口来操纵对象有什么好处? 答:1) 客户无须知道他们使用对象的特定类型,只须对象有客户所期望的接口。 2) 客户无须知道他们使用的对象是用什么类来实现的,他们只须知道定义接口的抽象类。 五、应用题(分值15) 公司架构:经理、工程师、技师和后勤人员都是公司的雇员,经理管理工程师、技师和后勤人员。高层经理领导较低级别的经理。典型层次图如下:可以使用哪种设计模式实现公司的层级关系?并说明为什么? 组合模式,第一,其公司关系架构为树形结构;第二,其表示了部分-整体关系(自己扩展)

《JAVA程序设计》模拟题 一.判断题 1.Java源代码中定义几个类,编译结果就生成几个以.class为后缀的字节码文件。(对) 2.注释的作用是使程序在执行时在屏幕上显示//之后的内容。(错) 3.有的类定义时可以不定义构造函数,所以构造函数不是必需的。(对) 4.由继承性可知,程序中子类拥有的成员数目一定大于等于父类拥有的成员数目。(错) 5.抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法(错) 6.java异常处理中可以使用多个catch子句,此时应将高级别异常类的catch子句放在前面。 (错) 7.Java语言中的数组元素下标总是从0开始,下标可以是整数或整型表达式。(对) 8.Applet是一种特殊的Panel,它是Java Applet程序的最外层容器。(对) 9.在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个属性与赋值对象相同的新对象。 (错) 10.System类不能实例化,即不能创建System类的对象。(对) 11.一个线程对象的具体操作是由run()方法的内容确定的,但是Thread类的run()方法是空的,其中没有内容;所 以用户程序要么派生一个Thread的子类并在子类里重新定义run()方法,要么使一个类实现Runnable接口并书写其中run()方法的方法体。(对) 12.接口是特殊的类,所以接口也可以继承,子接口将继承父接口的所有常量和抽象方法。(错) 13.静态初始化器是在其所属的类加载内存时由系统自动调用执行。(对) 14.如果p是父类Parent的对象,而c是子类Child的对象,则语句p=c是正确的。(对) 15.所有的鼠标事件都由MouseListener监听接口的监听者来处理(错) 二.单项选择题 1.在编写Java Applet程序时,若需要对发生的事件作出响应和处理,一般需要在程序的开头写上( D )语句。 A、import java.awt.* ; B、import java.applet.* ; C、import java.io.* ; D、import java.awt.event.* ; 2. 关于被私有保护访问控制符private protected修饰的成员变量,以下说法正确的是( B ) A、可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类 B、可以被两种类访问和引用:该类本身、该类的所有子类 C、只能被该类自身所访问和修改 D、只能被同一个包中的类访问 3. Java application中的主类需包含main方法,main方法的返回类型是什么?( D ) A、int B、float C、double D、void 4. 设有下面两个类的定义: class Person { class Student extends Person { long id; // 身份证号 int score; // 入学总分 String name; // 姓名 int getScore(){ } return score; } } 则类Person和类Student的关系是( A )。 A、包含关系 B、继承关系 C、关联关系 D、上述类定义有语法错误 5 . 容器Panel和Applet缺省使用的布局编辑策略是( A ) A、FlowLayout B、BorderLayout C、GridLayout D、CardLayout

Java中常见设计模式面试题 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 1.请列举出在JDK中几个常用的设计模式? 单例模式(Singleton pattern)用于Runtime,Calendar和其他的一些类中。工厂模式(Factory pattern)被用于各种不可变的类如Boolean,像Boolean.valueOf,观察者模式(Observer pattern)被用于 Swing 和很多的事件监听中。装饰器设计模式(Decorator design pattern)被用于多个 Java IO 类中。 2.什么是设计模式?你是否在你的代码里面使用过任何设计模式? 设计模式是世界上各种各样程序员用来解决特定设计问题的尝试和测试的方法。设计模式是代码可用性的延伸 3.Java 中什么叫单例设计模式?请用Java 写出线程安全的单例模式 单例模式重点在于在整个系统上共享一些创建时较耗资源的对象。整个应用中只维护一个特定类实例,它被所有组件共同使用。https://www.360docs.net/doc/e217928860.html,ng.Runtime是单例模式的经典例子。从 Java 5 开始你可以使用枚举(enum)来实现线程安全的单例。 4.在 Java 中,什么叫观察者设计模式(observer design pattern)?

《JA V A程序设计》期末考试试题(六)一、填空题 1.定义类的保留字是(class ),定义接口的保留字是( interface )。 2.Socket通常也称为(套接字),用于描述( IP 地址) 和( 端口)。 3.线程的优先级在( 1 )至( 10)之间,数值越大( 任务越紧急)。 4.构造方法是一种特殊的成员方法,构造方法名与( 类名) 相同。 5.Java语言只允许单继承,指每个类只能有一个( 父类)。 6.Java源程序的扩展名是( .java ),经过编译后的程序的扩展名是(.class )。 7. 在一个时间只能由一个线程访问的资源称为( 临界资源) 。访问临界资源的代码(临界代码)。 8. 在多线程系统中,多个线程之间有( 同步) 和( 互斥) 两种关系。 二、选择题 1.关于选择结构下列哪个说法正确?(B)A.if语句和else语句必须成对出现 B.if语句可以没有else语句对应 C.switch结构中每个case语句中必须用break语句 D.switch结构中必须有default语句 2.while循环和do…while循环的区别是:(D) A.没有区别,这两个结构任何情况下效果一样B.while循环比do…while循环执行效率高C.while循环是先循环后判断,所以循环体至少被执行一次 D.do…while循环是先循环后判断,所以循环体至少被执行一次 3.关于for循环和while循环的说法哪个正确?(B) A.while循环先判断后执行,for循环先执行后判断。 B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果 C.两种循环任何时候都不可以替换 D.两种循环结构中都必须有循环体,循环体不能为空 4.下列修饰符中与访问控制无关的是(D)A.private B.public C.protected D.final 5.void的含义:(A) A.方法没有返回值 B.方法体为空 C.没有意义 D.定义方法时必须使用 6.return语句:(C) A.只能让方法返回数值 B.方法都必须含有 C.方法中可以有多句return D.不能用来返回对象 7.关于对象成员占用内存的说法哪个正确?(B) A.同一个类的对象共用同一段内存 B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间 C.对象的方法不占用内存 D.以上都不对 8下列说法哪个正确?(C) A.不需要定义类,就能创建对象 B.对象中必须有属性和方法 C.属性可以是简单变量,也可以是一个对象 D、属性必须是简单变量

?工厂模式细分有三种,分别为:简单工厂模式、工厂方法模式和抽象工厂模式。 (现单个的讲,最后再讲这三个的区别) ?这篇文章主要通过一个农场的实例来讲解,这也是java与模式书中的例子,只不过我对一些部分进行了简化,一些部分进行了扩充,以帮助理解例子如下: 有一个农场公司,专门向市场销售各类水果有如下水果: 葡萄(grape) 草莓(strawberry) 苹果(apple) /*-------------------------------1、简单工厂模式-----------------------------------------------*/ 这个比较简单,写一下源代码源代码中给出了必须的注释代码比书上的要 简单一些,排版也好看一些,只是为了让新手更好的理解 Fruit.java: /** *水果与其它植物相比有一些专门的属性,以便与农场的 * 其它植物区分开这里的水果假设它必须具备的方法: * 生长grow()收获harvest()种植plant() */ public interface Fruit { void grow(); void harvest(); ?voidplant(); } /*****************************下面是Apple类的函数Apple.java:*******************/ /** *苹果是水果类的一种,因此它必须实现水果接口的所有方法即 *grow()harvest()plant()三个函数另外,由于苹果是多年生植物, *所以多出一个treeAge性质,描述苹果的树龄 */ public class Apple implements Fruit { privateint treeAge; publicvoid grow(){ //苹果的生长函数代码} ?public void harvest(){//苹果的收获函数代码} ?public void plant() { //苹果的种植函数代码}

一、单选题 1.Java JDK中调试器的命令是( )。 A. javac B. java C. jdb D. javah 2.运行jar文件中class文件需要在java命令后面加的参数为()。 A. -cp B. -g C. -d D. -verbose 3.下面哪项在java中是不合法的标识符?() A. $user B. point C. You&me D. _endline 4.下列哪一项不是Java保留字?() A. sizeof B. super C. abstract D. break 5.下列哪个布局管理器中的按钮位置有可能会根据Frame的大小改变而改变? () A. BorderLayout B. CardLayout C. GridLayout D. FlowLayout 6.下面哪些java语句会导致无限循环?( ) I. while (true) i = 0; II. while (false) i = 1; III. while (!false) i = 0; A. III only B. I and III only C. I only D. I, II and III 7.下面是Example.java文件的完整代码,请找出会产生编译错误的行()。 1) class BaseClass { 2) public String str; 3) public BaseClass(){ 4) System.out.println(“ok”);} 5) public BaseClass(String s){ 6) str=s;}} 7) class SubClass extends BaseClass{ 8) } 9) public class Example{ 10) public void method(){ 11) SubClass s=new SubClass(“hello”); 12) BaseClass b=new BaseClass(“world”); 13) } 14) } A. 7 B. 10 C. 11 D.12 8.可以在下面代码段point x处写入的是()。 //point x public class Interesting{ //do something } A. String str; B. static int PI=3.14; C. public class MyClass{//do other thing…} D. import java.awt.*; 9.下面关于事件监听的说明,哪一个语句是正确的?() A. 所有组件,都不允许附加多个监听器 B. 如果多个监听器加在一个组件上,那么事件只会触发一个监听器 C. 组件不允许附加多个监听器

相关文档
最新文档