Java设计模式总结

声明:本文是根据 “尚硅谷学院学习设计模式” 整理所得笔记,供自己复习所用

一、设计模式的目的

1.代码的重用性
相同功能的代码,不用多次编写
2.可读性
编程规范性,便于其他程序员的阅读和理解
3.可扩展性
当需要增加新的功能时,非常的方便,称为可维护)
4.可靠性
当我们增加新的功能后,对原来的功能没有影响)
5.使程序呈现高内聚,低耦合的特性则

二、七大原则

1.单一职责:
即一个类应该只负责一项职责

2.接口隔离:
客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上

3.依赖倒转
依赖倒转(倒置)的中心思想是面向接口编程

4.里式替换原则
所有引用基类的地方必须能透明的使用其子类对象

5.开闭原则
增加新的功能时,尽量增加,而不是修改

6.迪米特法则
最少知道原则

7.合成复用原则
尽量使用合成/聚合,而不是使用继承

三、三大类型

  1. 创建型模式:

    单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式

  2. 结构型模式:

    适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式

  3. 行为型模式:

    模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter 模式)、状态模式、策略模式、职责链模式(责任链模式)

三、UML类图

1、UML 基本介绍

1、Unified modeling language UML (统一建模语言),用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。

2、类之间的关系

依赖、泛化(继承)、实现、关联、聚合与组合。
依赖

  1. 类中用到了对方
  2. 如果是类的成员属性
  3. 如果是方法的返回类型
  4. 是方法接收的参数类型
  5. 方法中使用到

泛化:

  1. 泛化关系实际上就是继承关系
  2. 如果 A 类继承了 B 类,我们就说 A 和 B 存在泛化关系

实现:

  1. 实现关系实际上就是 A 类实现 B
    关联:
  2. 实际上就是类与类之间的联系,它是依赖的特例
  3. 单向一对一、双向一对一

聚合:

  1. 是整体和部分的关系,整体与部分可以分开。

组合:

  1. 也是整体与部分的关系,但是整体与部分不可以分开

在这里插入图片描述

网课截图

四、设计模式

1.单例设计模式

单例模式有八种方式:

  1. 饿汉式(静态常量)
  2. 饿汉式(静态代码块)
  3. 懒汉式(线程不安全)
  4. 懒汉式(线程安全,同步方法)
  5. 懒汉式(线程安全,同步代码块)
  6. 双重检查
  7. 静态内部类
  8. 枚举

饿汉式(静态变量):

步骤:

  1. 构造器私有化 (防止 new )
  2. 类的内部创建对象
  3. 向外暴露一个静态的公共方法。getInstance
class Singleton {
	//1. 构造器私有化, 外部不能 new
	private Singleton() {
	//2.本类内部创建对象实例
	private final static Singleton instance = new Singleton();
	//3. 提供一个公有的静态方法,返回实例对象
	public static Singleton getInstance() {
	return instance;
}
}

优缺点说明:

  • 优点:这种写法比较简单,就是在类装载的时候就完成实例化。避免了线程同步问题。
  • 缺点:
  1. 在类装载的时候就完成实例化,没有达到 Lazy Loading 的效果。如果从始至终从未使用过这个实例,则 会造成内存的浪费
  2. 这种方式基于 classloder 机制避免了多线程的同步问题,不过,instance 在类装载时就实例化,在单例模式中大多数都是调用getInstance 方法,但是导致类装载的原因有很多种,因此不能确定有其他的方式(或者其他的静 态方法)导致类装载,这时候初始化instance 就没有达到 lazy loading 的效果
  • 结论:这种单例模式可用,可能造成内存浪费

饿汉式(静态代码块)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值