KANG's BLOG

Let's have some fun

代理模式

定义 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。 伪代码示例 package proxy; public class ProxyTest { public static void main(String[] args) { Proxy proxy=new Proxy(); proxy.

单例模式

饿汉模式 public class EagerSingle { //在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快 private static EagerSingle single = new EagerSingle();//静态私有成员,已初始化 private EagerSingle() { //私有构造函数 } public static EagerSingle getInstance() {//静态,不用同步(类加载时已初始化,不会有多线程的问题) return single; } } 双重检查模式 public class Singleton { private static volatile Singleton sInstance; private Singleton() {} public static Singleton getInstance() { if (sInstance == null) {//第一次判空减少不必要的同步 synchronized (Singleton.

工厂模式

定义 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象 简单地说,工厂模式就是让用户忽略对象创建的过程,通过条件,获取不同对象。 例子 用户需要汽车,那就直接告诉工厂“汽车”,由工厂完成汽车的创建并把汽车提供给用户,至于汽车和飞机的创建具体细节如何,不需要用户考虑和关注。

状态模式

状态模式 概念 在状态模式(State Pattern)中,类的行为是基于它的状态改变的。 这种类型的设计模式属于行为型模式。 通常我们会判断对象的状态,来决定对象的行为。 比如: 公交车停车状态时,引擎停止,车门打开,乘客可以上下车; 行驶状态时,启动引擎,车门关闭,乘客禁止上下车。 在状态模式下,则通过修改对象的状态,影响对象的行为。

策略模式

概念 策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户 组成 抽象策略角色: 策略类,通常由一个接口或者抽象类实现 具体策略角色:包装了相关的算法和行为。 环境角色:持有一个策略类的引用,最终给客户端调用。 例子 比如,不同鸟类可能会飞,可能不会为,可能呱呱叫,可能吱吱叫。 所以我们可以定义鸟类这个父类有飞行行为、叫声行为。

适配器模式

定义 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。 例子 电脑不能直接插上网线,但是可以插上水晶头就可以间接连接网线了,水晶头就是一个适配器。