Toggle navigation
Honson Blog
Home
About
Tags
Honson Blog
一生想做浪漫极客
饿汉式单例模式
设计模式之单例模式
设计模式之饿汉式单例模式 懒汉式的单例比较简单,注重的是在类加载的时候就完成初始化,不用考虑类的同步问题,这个有个问题就是在类加载的时候就完成初始化,如果这个类在整个项目中都没有被使用也依旧会被初始化,这样就不能起到节省内存消耗的作用了。 这个实现起来非常简单,我们不做过多的讲解,我们看一下实现 public class HungrySingleton { private fin...
Posted by Honson on January 9, 2019
工厂方法模式
设计模式之工厂模式
工厂方法 定义 创建一个对象的接口(抽象类),但是让实现(继承)这个接口(抽象类)的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。 类型 创建型 适用场景 创建对象需要大量的重复代码 客户端(应用层)不依赖于产品实例如何被创建,实现等细节。 一个类通过其子类来指定创建哪个对象。 创建对象会产生大量的重复代码,工厂方法通过创建一个方法来交由子类创建对象。 ...
Posted by Honson on January 9, 2019
迪米特法则
软件开发原则之迪米特法则
迪米特法则 定义 一个对象应该对其他对象保持最少的了解。又叫最少知道原则。 尽量降低类之间的耦合。 主要强调降低耦合,优点也是降低耦合。 强调朋友交流,不和陌生人讲话。 所谓朋友: 出现在成员变量、方法的输入、输出参数中的类成为成员朋友类,而在方法体内部的类不属于朋友类。下面看代码 假设我们要实现一个需求校长下令给老师想知道班级有多少课。 新建一个校长类,有一个下命令方法。...
Posted by Honson on January 9, 2019
装饰者模式
设计模式之装饰者模式
装饰者模式 定义 在不改变原有对象的基础之上,将功能附加到对象上。提供了比继承更有弹性的替代方案(扩展原有对象功能) 类型 结构型 适用场景 扩展一个类的功能或者给一个类添加附加职责 给一个对象动态的添加功能,或动态撤销功能。 优点 继承的有力补充,比继承灵活,不改变原有对象的情况下给一个对象扩展功能。(继承在扩展功能是静态的,必须在编译时就确定好,而使用装饰者可以在运行...
Posted by Honson on January 9, 2019
建造者模式
设计模式之建造者模式
建造者模式 定义 讲一个复杂的对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。 用户只需指定需要建造的类型就可以得到他们,建造过程及其细节不需要知道 类型 创建型 适用场景 如果一个对象有非常复杂的内部结构(很多属性) 想把复杂对象的创建和使用分离 优点 封装性好,创建和使用分离 拓展性好、建造类之间独立...
Posted by Honson on January 9, 2019
适配器模式
设计模式之适配器模式
适配器模式 定义 将一个接口转换成客户期望的另一个接口。这里的接口可以指一个接口也可以是一个类,一个方法。 使本来接口不兼容的类可以一起工作。 类型 结构型 使用场景 已经存在的类,他的方法和需求不匹配时(方法结果相同或相似) 适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护不同的产品、不同厂家造成的功能相似接口不同的情况下的解决方案。 优点 能提高...
Posted by Honson on January 9, 2019
组合模式
设计模式之组合模式
组合模式 定义 将对象组合成树形结构以表示“部分-整体”的层次结构。 组合模式是客户端对单个对象和组合对象保持一致的方式处理。 类型 结构型 适用场景 希望客户端可以忽略组合对象与单个对象的差异是 处理一个树形结构时 优点 清楚地定义分层次的复杂对象,表示对象的全部或部分层次。 让客户端忽略了层次的差异...
Posted by Honson on January 9, 2019
序列化和反序列化对单例破坏
设计模式之原型模式
首先我们来看一下序列化和反序列化是怎么破坏单例的。看代码 public class HungrySingleton implements Serializable{ private final static HungrySingleton hungrySingleton; static{ hungrySingleton = new HungrySingl...
Posted by Honson on January 9, 2019
容器单例
设计模式之单例模式
容器单例 我们先看代码吧 public class ContainerSingleton { private ContainerSingleton(){ } private static Map<String,Object> singletonMap = new HashMap<String,Object>(); public s...
Posted by Honson on January 9, 2019
外观模式
设计模式之外观模式
外观模式 定义 又叫门面模式,提供了一个统一的接口,用来访问子系统中的一群接口。定义了一个高层接口,让子系统更容易使用。 类型 结构型 使用场景 子系统越来越复杂,增加外观模式提供的简单调用接口 构建多层系统结构,利用外观对象作为每层的入口,简化层间调用。 优点 简化了调用过程,无需了解深入子系统,防止来风险。 减少系统的依赖、松散耦合 更好的划分访问层次...
Posted by Honson on January 9, 2019
← Newer Posts
Older Posts →
FEATURED TAGS
Design Patterns
mybatis
java
jvm
ABOUT ME
写写代码,
离开世界之前,一切都是过程
知