halisi7

一个专注技术的组织

0%

Java面向对象3-设计模式

设计模式:

设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、 以及解决问题的思考方式。设计模免去我们自己再思考和摸索。就像是经典 的棋谱,不同的棋局,我们用不同的棋谱。”套路”

单例设计模式:

image-20220120113211583

  1. 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例。

  2. 如何实现?

    饿汉式 vs 懒汉式

  3. 区分饿汉式 和 懒汉式

    饿汉式:
    坏处:对象加载时间过长。
    好处:饿汉式是线程安全的

    懒汉式:好处:延迟对象的创建。

     目前的写法坏处:线程不安全。--->到多线程内容时,再修改
    

单例模式的优点:

由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的 产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可 以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方 式来解决。

饿汉式举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class SingletonTest1 {
public static void main(String[] args) {
// Bank bank1 = new Bank();
// Bank bank2 = new Bank();

Bank bank1 = Bank.getInstance();
Bank bank2 = Bank.getInstance();

System.out.println(bank1 == bank2);
}
}

//饿汉式
class Bank{

//1.私有化类的构造器
private Bank(){

}

//2.内部创建类的对象
//4.要求此对象也必须声明为静态的
private static Bank instance = new Bank();

//3.提供公共的静态的方法,返回类的对象
public static Bank getInstance(){
return instance;
}
}

懒汉式举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class SingletonTest2 {
public static void main(String[] args) {

Order order1 = Order.getInstance();
Order order2 = Order.getInstance();

System.out.println(order1 == order2);

}
}

//懒汉式
class Order{

//1.私有化类的构造器
private Order(){

}

//2.声明当前类对象,没有初始化
//4.此对象也必须声明为static的
private static Order instance = null;

//3.声明public、static的返回当前类对象的方法
public static Order getInstance(){

if(instance == null){

instance = new Order();

}
return instance;
}

}

单例设计模式的应用场景:

image-20220120113404224

打赏一下作者~ ฅ( ̳• ◡ • ̳)ฅ