欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

常见设计模式面试问题与答案

最编程 2024-03-04 16:15:33
...
  1. 写出****两种Java设计模式中不同的**单例模式**singleton****

  2. /*第一种(懒汉,线程不安全):所谓懒汉,就是说当这个对象在需要进行获取的时候,再去对该对象进行创建*/

  3. public class Singleton{

  4. private static Singleton instance;

  5. //通过将构造方法私有化达到,不能直接通过new 类名(),创建类的目的!!!

  6. private Singleton(){}

  7. public static Singleton getInstance(){

  8. if (instance == null){

  9. instance = new Singleton();

  10. }

  11. return instance;

  12. }

  13. }

  14. /*第二种(懒汉,线程安全):这里的线程安全看起来十分的美好,但是效率却十分的低,所以一般的情况下不会使用这种方式*/

  15. public class Singleton {

  16. private static Singleton instance;

  17. private Singleton(){}

  18. //通过在此使用同步方法,进行将其变成线程安全的!!!

  19. public static synchronized Singleton getInstance(){

  20. if (instance == null) {

  21. instance = new Singleton();

  22. }

  23. return instance;

  24. }

  25. }

  26. /*第三种(饿汉 : 线程安全) : 当该类一旦进行加载(classLoader机制),就需要对其该类中的对象进行创建,同样因此也就使其避免了线程的安全问题*/

  27. public class Singleton {

  28. private static Singleton instance = new Singleton();

  29. private Singleton(){}

  30. public static Singleton getInstance() {

  31. return instance;

  32. }

  33. }

  34. /*第四种(枚举):该方法是Effective Java作者Josh Bloch 提倡的方式,它不仅能避免多线程同步问题,保证只有一个实例,即使使用反射机制也无法多次实例化一个枚举量*/

  35. public enum Singleton {

  36. INSTANCE;

  37. private Singleton();

  38. }

  39. j2ee常用的设计模式?描述Singleton的作用

0,Java当中总共包含以下23种设计模式!!!

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、

享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

1,常用的有 :

0,工厂方法模式、工厂设计模式中包含三种,这里是指普通工厂、就是建立一个工厂类,对实现

了同一接口的一些类进行实例的创建。

1,单例模式、单例对象(Singleton)是一种相对来说更常用的设计模式。在Java应用中,单

例对象能保证在一个JVM中,该对象只有一个实例存在。

2,适配器模式、适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除

由于接口不匹配所造成的类的兼容性问题。

主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 3,装饰器模式、顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例

4,代理模式、代理模式就是多一个代理类出来,替原对象进行一些操作,同样也是对类进行动态增强的一种方式

5,策略模式等、策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户

-----------------------------以上是常用的六种设计模式----------------------------------

Singleton的作用,也就是Singleton的好处,利用这个单例实际模式可以做到什么

1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。(这个时候如果不需要多个对象,就可以使用单例设计模式进行搞定)!!!

2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。-- 这条与第一条,的作用就是减少系统开销,降低内存使用!!!

3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。--有效的对系统进行控制!!!

4、再比如有些软件的配置文件,不管使用该软件当中什么工具,都会对同一个配置文件进行读取和修改,这就是单例设计的思想!!!--使用该思想,可以实现某些业务需求!!!

  1. 举例你所熟悉的设计模式,单例、工厂除外

装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创

建一个包装对象,也就是装饰来包裹真实的对象。装饰模式的特点

(1) 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰

对象交互。

(2) 装饰对象包含一个真实对象的引用。

(3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。

(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。