茂展的分享博客

面试总结(One)

笔试总结(One)

面向对象的五大基本原则

  • 单一职责原则(SRP)
    一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。
  • 开放封闭原则(OCP)
    软件实体应该是可扩展的,而不可修改的。也就是,对扩展开放,对修改封闭的
  • 里氏替换原则(LSP)
    子类必须能够替换其基类。这一思想体现为对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础。
  • 依赖倒置原则(DIP)
    依赖于抽象。具体而言就是高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不依赖于具体,具体依赖于抽象。
  • 接口隔离原则(ISP)
    使用多个小的专门的接口,而不要使用一个大的总接口

单例模式

饿汉式加载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.nyist.singleton;

/**
* 饿汉式单例模式
* 线程安全
*/

public class SingletonDemo1 {

private static SingletonDemo1 demo1 = new SingletonDemo1(); //类初始化的时候,立刻加载对象

private SingletonDemo1() {

}

public static SingletonDemo1 getInstance(){
return demo1;
}
}

懒汉式

什么时候需要什么时候加载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.nyist.singleton;

/**
* 懒汉式
*/
public class SingletonDemo2 {

private static SingletonDemo2 s;

private SingletonDemo2(){

}

public static synchronized SingletonDemo2 getInstance(){
if(s == null){
s = new SingletonDemo2();
}
return s;
}
}

静态内部类实现方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.nyist.singleton;

//静态内部类实现方式(也是一种懒加载的方式)
public class SingletonDemo3 {


private static class SingletonClassInstance{
private static final SingletonDemo3 singletonDemo3 = new SingletonDemo3();
}

private SingletonDemo3() {

}
public SingletonDemo3 getInstance(){
return SingletonClassInstance.singletonDemo3;
}
}

枚举方式(没有懒加载的功能)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.nyist.singleton;

public enum SingletonDemo4 {

//枚举类型 本身就是单例模式
Instance;

//添加自己所需要的操作
public void test(){

}

public static void main(String[] args) {
System.out.println(SingletonDemo4.Instance == SingletonDemo4.Instance);//结果为true
}
}
------本文结束感谢阅读------
🐶 您的支持将鼓励我继续创作 🐶