• java面试题汇总五


    第四部分 Java SE基础

    4.1设计模式和常用的设计模式

     

    4.1.1  设计模式就是经过前人无数次的实践总结出的,设计过程中可以反复使用的,可以解决特定问题的设计方案。

    提供一个方法获取该实例对象(创建时需要进行方法同步)

    工厂模式:Spring IOC就是使用的工厂模式   对象的创建交给一个工厂去创建。      

    代理模式:Spring AOP就是使用的动态代理。

     

     4.1.2  单例模式

    这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

    一、懒汉模式:构造方法私有化,让除了自己类能创建外其他地方都不能创建

    //1.非线程安全懒汉模式,
    public class SingletonDemo {
    private static SingletonDemo instance;
    private SingletonDemo(){
    }
    public static SingletonDemo getInstance(){
    if(instance==null){
    instance=new SingletonDemo();
    }
    return instance;
    }
    }
    //2、 线程安全懒汉模式
    public class SingletonDemo {
    private static SingletonDemo instance;
    private SingletonDemo(){
    }
    public static synchronized SingletonDemo getInstance(){
    if(instance==null){
    instance=new SingletonDemo();
    }
    return instance;
    }
    }

    二、饿汉模式

    直接在运行这个类的时候进行一次 loading,之后直接访问。显然,这种方法没有起到lazy loading 的效果,考虑到前面提到的和静态类的对比,这种方法只比静态类多了一个内存常驻而已。

    在自己的类中创建一个单实例(饱汉模式是一出来就创建单实例,而饥汉模式是需要的时候才创建)

    public class SingletonDemo {
    private static SingletonDemo instance=new SingletonDemo();
    private SingletonDemo(){
    }
    public static SingletonDemo getInstance(){
    return instance;
    }
    }

     4.1.3 设计模式六大原则

    1. 单一职责原则(Single Responsibility Principle, SRP) :一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因。

    2. 开闭原则(Open-Closed Principle, OCP): : 一个软件实体应当对扩展开放 , 对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。

    3. 里氏代换原则(Liskov Substitution Principle, LSP) :所有引用基类(父类)的地方必须能透明地使用其子类的对象。

    4. 依赖倒转原则(Dependency Inversion Principle, DIP) :抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程

    5. 接口隔离原则(Interface Segregation Principle, ISP) :使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

    6. 迪米特法则(Law of Demeter, LoD) :一个软件实体应当尽可能少地与其他实体发生相互作

    -----------------------------------------------------------------------------------我是分割线---------------------------------------------把所有的春天都揉进一个清晨----------------------------------------------------------------------------

     

     

     

  • 相关阅读:
    PID算法控制直流电机笔记
    HAL库直流电机编码测速(L298N驱动)笔记
    HAl库控制L298N直流电机旋转笔记
    MQTT介绍与使用(转载)
    STM32中STD、HAL、LL库比较
    rpm检验是否被改动过
    find命令 参数
    会话管理测试时的注意点
    无权限修改用户组权限的状况一
    burpsuite + sqlmap 日志导出批量扫描
  • 原文地址:https://www.cnblogs.com/creative-work/p/12499683.html
Copyright © 2020-2023  润新知