本文已参与「新人创作礼」活动,一起开启掘金创作之路。
设计模式软件设计中总结出来的针对特定问题的通用的解决方案
1. 工厂方法模式****
①工厂类②工厂类有生产方法③调用生产方法(通过参数的不同)得到想要的产品(对象)
2. 抽象工厂模式****
在工厂方法上进行改进,①将工厂方法改成工厂接口②不同的实现变换成不同的工厂
3. 单例模式****
单例对象能保证在一个JVM中,该对象只有一个实例存在
主要思想:①第一次使用是创建实例,后续使用直接返回之前建好的实例即可②通过静态类创建单一的实例
饿汉式在类创建的同时就实例化一个静态对象出来,不管之后会不会使用这个单例
懒汉式在第一次使用才创建实例(加锁,避免多人同时创建)
4. 建造者模式****
工厂模式关注的是创建单个产品,而建造者模式则关注创建符合对象,多个部分(对象列表,以及对象里面的属性等等)
5. 原型模式****
该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象
6. 适配器模式****
加入适配层,用于消除两个类间接口不匹配问题
分为类的适配器模式、对象的适配器模式、接口的适配器模式
类的适配器模式:当希望将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可。
对象的适配器模式:当希望将一个对象转换成满足另一个新接口的对象时,可以创建一个Wrapper类,持有原类的一个实例,在Wrapper类的方法中,调用实例的方法就行。
接口的适配器模式:当不希望实现一个接口中所有的方法时,可以创建一个抽象类Wrapper,实现所有方法,我们写别的类的时候,继承抽象类即可。
7. 观察者模式****
当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系
通常主对象发送通知给观察者
8. 命令模式****
命令模式的目的就是达到命令的发出者和执行者之间解耦,实现请求和执行分开
原理就是①命令的发出者不需要知道执行者是谁②执行者只有在具体命令出来后才确定③命令里面携带执行者
实现通常是,将执行者传入命令,再将命令传入发出者,然后调用发出者的发号施令方法
9. 状态模式****
当对象的状态改变时,同时改变其行为
原理是状态绑定行为