JAVA_设计模式面试专题10道

1.请列举分析出在JDK中几个方面常用的设计教学模式?
    单例模式(Singleton pattern)用于Runtime,Calendar和其他的一些类中。工厂管理模式(Factory pattern)被用于通过各种不可变的类如 Boolean,像Boolean.valueOf,观察者进行模式(Observer pattern)被用于 Swing 和很多的事件网络监听中。装饰器设计教学模式(Decorator design pattern)被用于实现多个 Java IO 类中。

2. 什么是设计模式? 你在代码中使用过任何设计模式吗?
    设计模式是世界各地各种程序员尝试和测试解决特定设计问题的方法。 设计模式是代码可用性的扩展

3. java 的单例设计模式是什么? 用 java 写出线程安全单例模式
    Singleton模式侧重于在整个系统中共享一些资源密集型对象。在整个应用程序中只维护一个特定的类实例,它由所有组件使用。Java.lang.Runtime是单例模式的经典例子。从Java 5开始,可以使用enum实现线程安全的单例。

4.在 Java 中,什么叫观察者进行设计教学模式(observer design pattern)?
    观察者模式是基于对象的状态变化和观察者的通信,以便它们可以相应地进行操作。一个简单的例子是一个天气系统,当天气发生变化时,它必须反映在向公众显示的视图中。这个视图对象是一个主题,而不同的视图是观察者。

5.采用工厂模式的主要好处是什么? 在哪里使用?
    工厂模式的最大好处是在创建对象时提高了封装级别。如果您使用工厂来创建对象,那么您可以用更高级别和更高性能的实现替换原始的产品实现或类,这不需要在调用层进行任何更改。

6.举一个用Java实现的decorator模式的例子?它是在对象级还是类级工作?
    装饰设计模式可以增加自己强了对于单个研究对象的能力。Java IO 到处发展都使我们用了一种装饰管理模式,典型应用例子来说就是 Buffered 系列类如BufferedReader和BufferedWriter,它们增强了Reader和Writer对象,以实现企业提升工作性能的 Buffer 层次的读取和写入。

7.在Java中,为什么不允许从静态方法访问非静态变量呢?
    在Java中,不能从静态上下文访问非静态数据,仅因为非静态变量与特定对象实例相关联,而静态变量不与任何实例相关联。

8. 设计一台 atm 机,请说说你的设计构思?
    例如,在设计金融系统时,我们必须知道它们在任何情况下都应该正常工作。无论停电或其他情况,ATM都应保持正确的状态(交易)。想想锁、事务、错误条件、边界条件等等。虽然你想不出具体的设计,但是如果你能指出非功能性需求,提出一些问题,思考边界条件,那就很好了。

9.在 Java 中,什么问题时候用重载,什么工作时候用重写?
    如果您看到类的不同实现有不同的方法来做相同的事情,那么应该使用重写(重写)和重载(重载)来使用不同的输入做相同的事情。在Java中,重载的方法签名是不同的,而重写则不是。

10.请给我一个例子,说明您更喜欢使用抽象类而不是接口的情况?
    接口和抽象类被设计成“面向接口而不是实现编码”,这增加了代码适应不断变化的需求的灵活性。这里有几点可以帮助你回答这个问题:
    在Java中,只能继承一个类,但是可以实现多个接口。所以一旦你继承了一个类,你就失去了继承其他类的机会。
    接口通常被人们用来进行表示一个附属功能描述或行为如:Runnable、Clonable、Serializable等等,因此我们当你可以使用这个抽象类来表示行为时,你的类就不能发展同时是Runnable和Clonable(注:这里的意思是指如果把Runnable等实现为抽象类的情况),因为在 Java 中你不能通过继承他们两个类,但当你需要使用网络接口时,你的类就可以实现同时企业拥有世界多个国家不同的行为。
    在一些需要使用抽象类的高时间需求的应用程序中,它会比接口稍微快一些。
    如果希望在类继承层次结构中规范化一组行为,那么抽象类是一个更好的选择,并且可以在相同的地方更好地对它们进行编码。 有时接口和抽象类可以一起使用,接口中定义函数,抽象类中定义默认实现。更多JAVA参考:https://pan.baidu.com/s/1brJVbjPK4kacncAsQtgrmA 提取码:1234 JAVA_设计模式面试专题10道_第1张图片

你可能感兴趣的:(JAVA,java,单例模式,开发语言)