zoukankan      html  css  js  c++  java
  • (办公)面试java设计模式

      1.单例模式:
    程序开发的时候,有些对象只能有一个.有实例,且只有一个,比如工具类.
    修改构造方法为私有的.
    饿汉模式: 线程安全
    创建一个实例
    Private Static 实例;
    提供一个静态方法,这样就可以访问到了.
    懒汉模式: 线程不安全
    创建一个实例
    Private Static 实例,设定为null;
    提供一个静态方法,判断实例是否为null,这样就可以访问到了.
    2.工厂模式:
    实例化对象,工厂方法代替new操作.
    工厂方法模式:
    抽象工厂模式(是工厂方法模式的扩展):
    定义接口创建对象,但是让子类来决定那些类需要被实例化.
    工厂方法把实例化的工作推给子类实现.
    适合工厂的模式:[
    有一组类似的对象需要创建.
    ]
    
    
    3.观察者模式
    观察者模式就如一个聊天室,当你需要收到聊天室的消息时,你就注册成为聊天室的成员,当聊天室有信息更新时,就会传到你那去。当你不需要接收聊天室的信息时,可以注销掉,退出聊天室。
    
    又例如,天气观测站和气象报告板的关系。但报告板想获取观测站的数据,可以注册加入到观测站的观察者列表中,这就可以使观测站有数据更新时,自动传给气象报告板。
    4.责任链模式
    使多个对象都有机会处理同一个请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
    应用场景:
         为完成同一个请求,如果存在多个请求处理器以及未知请求处理器个数或者请求处理器可动态配置的情况下,可以考虑使用责任链模式。如OKHttp的拦截器就是使用的责任链模式。
    
    
    5.代理模式
    即通过代理对象访问目标对象,这样做的好处是:在不修改目标对象的源码下,对方法功能进行增强。也就是在间接访问目标对象的同时,可以在其前或后,添加其它的逻辑代码.
     
    6.策略模式:
    从一定程度解决了多重条件判断带来的代码冗余及紧耦合的问题
    使用场景:
    ①如果在一个系统有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为;
    ②一个系统需要动态地在几种算法中选择一种; 
    ③如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现
    
    
    7.适配器模式
    配器模式的思想是:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
    用电器来打个比喻:有一个电器的插头是三脚的,而现有的插座是两孔的,要使插头插上插座,我们需要一个插头转换器,这个转换器即是适配器。
    适配器模式涉及3个角色:
    
        源(Adaptee):需要被适配的对象或类型,相当于插头。
        适配器(Adapter):连接目标和源的中间对象,相当于插头转换器。
        目标(Target):期待得到的目标,相当于插座。
    8.模板方法模式
    模板方法模式属于行为型模式,它定义一个操作中的算法的骨架,而将一些步骤推迟到子类当中实现。父类抽取并实现的是公共方法,对于可变方法,父类做的只是定义了可变行为的接口,具体实现留给子类去完成,实现对代码的重复利用。
    
    
  • 相关阅读:
    android开发过程遇到的一些错误
    TCP/IP协议详解笔记——ARP协议和RARP协议
    TCP/IP协议详解笔记——IP协议
    C# Exchange发送邮件
    Echarts柱状图堆叠显示总数
    Git解决fatal: unable to connect to github.com问题
    IIS 413错误 解决方案
    C#启动外部Exe控制台程序并输入命令
    再看JavaScript
    Web Api(5)
  • 原文地址:https://www.cnblogs.com/historylyt/p/10357853.html
Copyright © 2011-2022 走看看