java设计模式总结
参考:https://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html
一、创建型模式:静态工厂、抽象工厂、单例模式、建造者模式、原型模式
静态工厂
优点:不需要创建实例,直接使用
缺点:对扩展不开放,增加新功能方法需要修改工厂类
抽象工厂
优点:对扩展开放,新增功能只需要实现接口创建一个新工厂,不需要修改现有工厂
缺点:需创建多个工厂类、重复代码较多
单例模式:JVM中只存在一个实例,通过单一实例控制数据唯一通道,单例实现需要考虑延迟加载,还需要考虑线程安全,主要可以通过synchronized、volatile、双重检查实现,也可通过内部静态enum枚举类实现(JVM能保证enum构造方法只执行一次)
建造者模式:创建和表现分开,继承接口,给予不同的建造者、创建含有相同属性不同的表现形式的对象
原型模式:从已有的对象复制快速创建一个新对象,类需要实现Cloneable接口,一个clone方法中调用super.clone(),如类中包含引用属性,需要深复制,可以通过当前对象二进制流复制,写、读对象二进制流
二、结构型模式:适配器模式、
适配器模式:
类的适配器模式:当希望将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可。
对象的适配器模式:当希望将一个对象转换成满足另一个新接口的对象时,可以创建一个Wrapper类,持有原类的一个实例,在Wrapper类的方法中,调用实例的方法就行。
接口的适配器模式:当不希望实现一个接口中所有的方法时,可以创建一个抽象类Wrapper,实现所有方法,我们写别的类的时候,继承抽象类即可。