设计模式
black小黑黑
何以解忧,唯有暴富
展开
-
设计模式之代理模式
一,定义与类型定义:为其他对象提供一种代理,以控制对这个对象的访问代理对象在客户端和目标对象之间起到中介作用类型:结构型二,适用场景1.保护目标对象2.增强目标对象中介隔离作用:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。三,优点:1.代理模式能将代理对象与真实被调用的目标...原创 2019-12-23 11:25:40 · 120 阅读 · 0 评论 -
设计模式之适配器
一,定义与类型将一个类的接口转换成客户期望的另一个接口使原本不兼容的类可以一起工作类型:结构型二,适用场景1.已经存在的类,它的方法和需求不匹配时(方法结果相同或相似)2.不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品,不同厂家造成功能类似而接口不相同情况下的解决方案三,优点:1能提高类的透明性和复用,现有的类复用但不需要改变2.目标类和适配器类解耦,提高程序扩展性...原创 2019-12-22 11:20:03 · 112 阅读 · 0 评论 -
设计模式之装饰者模式
一,定义与类型在不改变原有对象的基础之上,将功能附加到对象上提供了比继承更有弹性的替代方案类型:结构型二,适用场景1.扩展一个类的功能或给一个类添加附加职责2.动态的给一个对象添加功能,也可动态撤销三,优点:1.比继承灵活,不改变原有对象给一个对象扩展功能2.通过使用不同装饰类以及这些装饰类的排列组合,实现不同效果3.符合开闭原则四,缺点:出现更多的代码,更多的类,增加程序...原创 2019-12-20 11:26:58 · 117 阅读 · 0 评论 -
设计模式之外观模式
一,定义与类型提供了一个统一的接口,用来访问子系统中的一群接口定义了一个高层接口,让子系统更容易使用类型:结构型二,适用场景1.子系统越来越复杂,增加外观模式提供简单的调用接口2.构建多层系统结构,利用外观对象作为每层的入口,简化层间调用三,优点:1.简化了调用过程,无需了解深入子系统,防止带来风险2.减少系统依赖,松散耦合3.更好划分访问层次四,缺点:1.增加子系统,扩展...原创 2019-12-20 10:02:20 · 132 阅读 · 0 评论 -
设计模式之原型模式
一,定义:原型实例指定创建对象的种类,通过拷贝这些原型创建新对象特点:不需要知道任何创建细节,不调用构造函数二,适用场景1.类初始化消耗较多资源2.new产生一个对象需要非常繁琐的过程(数据准备,访问权限等)3.构造函数比较复杂4.循环体中生产大量对象时三,优点1.原型模式性能比new一个对象的性能高2.简化创建过程四,缺点1.必须配备克隆方法2.对克隆复杂对象或对克隆出...原创 2019-12-18 15:36:34 · 306 阅读 · 0 评论 -
设计模式之单例模式(源码分析jdk+spring+mybatis)
1.Runtime属于饿汉式2.Desktop3.Spring中bean4.mybatis中ErrorContext为ThreadLocal基于线程唯一原创 2019-12-18 09:50:10 · 209 阅读 · 0 评论 -
设计模式之单例模式(Enum枚举和容器单例)
Enum枚举单例具有天然序列化机制public enum EnumInstance { INSTANCE; private Object data; public Object getData() { return data; } public void setData(Object data) { this.dat...原创 2019-12-17 10:37:19 · 335 阅读 · 0 评论 -
设计模式之单例模式(反射攻击)
模拟反射攻击饿汉式模拟饿汉式public class HungrySingleton implements Serializable { private final static HungrySingleton hungrySingleton; static { hungrySingleton=new HungrySingleton(); } ...原创 2019-12-17 09:18:29 · 227 阅读 · 0 评论 -
设计模式之单例模式(序列化破坏单例模式)
饿汉式public class HungrySingleton implements Serializable { private final static HungrySingleton hungrySingleton; static { hungrySingleton=new HungrySingleton(); } private Hungr...原创 2019-12-16 11:19:54 · 117 阅读 · 0 评论 -
设计模式之单例模式(双重检查与静态内部类)
双重检查讲解public class LazyDoubleCheckSingleton { private static LazyDoubleCheckSingleton lazyDoubleCheckSingleton=null; private LazyDoubleCheckSingleton(){} public static LazyDoubleCheckSing...原创 2019-12-16 10:17:06 · 237 阅读 · 0 评论 -
设计模式之单例模式(懒汉式与饿汉式)
一,定义与类型定义:保证一个类仅有一个实例,并提供一个全局访问点类型:创建型二,适用场景确保任何情况下绝对只有一个实例线程池,数据库连接池用单例设计三,优点:1.在内存中只有一个实例,减少内存开销2.避免对资源多重占用3.设置全局访问点,严格控制访问四,缺点;没有接口,扩展困难五,重点:1.私有构造器2.线程安全3.延迟加载4.序列化和反序列化安全5.反射(防止)...原创 2019-12-15 11:24:40 · 138 阅读 · 0 评论 -
设计模式之建造者模式
一,定义与类型(注重于方法的调用顺序)1,定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示2,用户只需指定需要建造的类型就可以得到他们,建造过程及细节不需要知道3,类型:创建型二,适用场景1,如果一个对象有非常复杂的内部结构(很多属性)2,想把复杂对象的创建和使用分离三,优点封装性好,创建和使用分离扩展性好,建造者之间独立,一定程度上解耦(不仅创建...原创 2019-11-04 15:49:30 · 144 阅读 · 0 评论 -
设计模式之抽象工厂
一,定义与类型定义:抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口类型:创建型二,适用场景1,强调一系列相关产品对象(属于同一产品族)一起使用创建对象需要大量重复代码2,提供一个产品类的库,所有产品以同样接口出现,从而使客服端不依赖于具体实现三,优点将一个系列的产品族统一到一起创建四,产品等级结构与产品族五,coding1.CourseFactorypublic ...原创 2019-11-04 11:05:42 · 119 阅读 · 0 评论 -
设计模式之工厂方法
一,适用场景1,创建对象需要大量重复代码2,客户端不依赖产品类实例如何被创建,实现等细节3,一个类通过其子类来指定创建哪个对象二,优点1,用户只需关心所需产品对应的工厂,无需关系创建细节2,加入新产品符合开闭原则,提高可扩展性三,缺点1,类的个数容易过多2,增加系统的抽象度和复杂度四,coding1.Vedio代码public abstract class Vedio {...原创 2019-11-04 09:54:28 · 118 阅读 · 0 评论 -
设计模式之简单工厂
简单工厂抽象Vediopublic abstract class Vedio { public abstract void produce();}JavaVediopublic class JavaVedio extends Vedio { @Override public void produce() { System.out.println(...原创 2019-10-07 20:36:09 · 97 阅读 · 0 评论