zoukankan      html  css  js  c++  java
  • 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) :一个软件实体应当尽可能少地与其他实体发生相互作

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

     

     

     

  • 相关阅读:
    关于java集合框架(二):List
    仪式感
    java的foreach(增强for循环)
    关于Java集合框架(一):概述与Set
    重新开始
    简单fork循环分析
    fork,写时复制(copy-on-write),vfork
    树莓派换源
    Windows下TexLive2018环境配置及检测
    Linux下高精度时间
  • 原文地址:https://www.cnblogs.com/creative-work/p/12499683.html
Copyright © 2011-2022 走看看