写点什么

第三周总结

用户头像
Geek_ac4080
关注
发布于: 2020 年 10 月 08 日

什么是设计模式

描述同一类问题的通用解决方案

  • 从功能分,主要分为三类:创建模式,结构模式,行为模式

  • 从方式分,主要分为两类:以继承方式实现(静态),以组合方式实现(动态)

简单工厂模式





  • Factory:工厂类,简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。

  • IProduct:抽象产品类,简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

  • Product:具体产品类,是简单工厂模式的创建目标

优点与缺点

优点:

  • 客户端不再依赖产品的具体实现,统一由工厂管理

缺点:

  • 切换产品需要修改工厂实现

改进一

修改工厂实现,使用反射根据具体的产品名称获取指定产品,产品的细节实现对客户端是透明的,需要客户端指定产品名称

改进二

使用外部配置文件指定产品,切换产品不需要修改代码,修改配置文件即可

单例模式

整个系统只有一个实例,并且自行实例化向整个系统提供实例





保证产生单一实例,需注意以下两点:

  • 私有构造函数,不允许通过new创建对象

  • 防止多线程创建多个实例

单例模式主要分为懒汉式和饿汉式两种

懒汉式

public class Singleton {
private static class LazyHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton (){}
public static Singleton getInstance() {
return LazyHolder.INSTANCE;
}
}

饿汉式

// 饿汉式单例
public class Singleton{
// 指向自己实例的私有静态引用,主动创建
private static Singleton singleton = new Singleton();
// 私有的构造方法
private Singleton(){}
// 以自己实例为返回值的静态的公有方法,静态工厂方法
public static Singleton getSingleton(){
return singleton;
}
}



适配器模式

把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作

适配器模式的形式分为:类的适配器模式 & 对象的适配器模式

类适配器





对象适配器



模版方法模式

  • 基类负责算法的轮廓和骨架

  • 子类负责算法的具体实现





策略模式

系统需要在多种算法中选择一种,客户端方便根据外部条件选择不同策略来解决不同问题





组合模式

也称为 整体-部分(Part-Whole)模式,它的宗旨是通过将单个对象(叶子节点)和组合对象(树枝节点)用相同的接口进行表示,使得客户对单个对象和组合对象的使用具有一致性。



装饰器模式

在不改变对客户端的接口前提下扩展现有对象的功能,动态地将责任附加到对象上,装饰器会形成一条装饰链





spring中的设计模式

依赖注入

spring中对象与对象之间的依赖实例化并不是手动new出对象进行赋值,而是由spring生成依赖的对象,然后将对象注入到指定对象中,主要实现原理是通过反射构造被注入对象的set方法进行依赖注入

单例模式

  1. 先从缓存Map中获取类的实例

  2. 如果为空则加锁通过工厂获取实例并缓存到Map中

用户头像

Geek_ac4080

关注

还未添加个人签名 2019.05.09 加入

还未添加个人简介

评论

发布
暂无评论
第三周总结