关于java:设计模式单例模式工厂模式

29次阅读

共计 1768 个字符,预计需要花费 5 分钟才能阅读完成。

什么是设计模式?

设计模式(Design Patterns)代表了最佳的实际,通常被有教训的面向对象的软件开发人员所采纳。设计模式是软件开发人员在软件开发过程中面临的个别问题的解决方案。

设计模式分类:(3 大类,23 种)

创立型模式:单例模式、形象工厂模式、原型模式、建造者模式、工厂模式。

结构型模式:适配器模式、桥接模式、装璜模式、组合模式、外观模式、享元模式、代理模式。

行为型模式:模板办法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、责任链模式。

一,单例模式:


采取办法,使整个软件系统中,对某个类只存在一个对象实例。并且该类只提供一个获得其对象实例的办法(静态方法)。

实现的类型:

1)饿汉模式:

饿汉模式就是当类加载时就创立该类的实例,这是创立单例类最容易的办法然而有个一弊病是创立了该实例然而客户端程序可能不应用这个实例。

2)动态初始化:

静块初始化实现相似于饿汉模式初始化,但类的实例在动态代码块中创立并对异样进行解决。

3)懒加载:

懒加载就是当须要的时候再来创立该类的实例,而不是一开始就把实例创立好了。

4)线程平安的单例:

public class ThreadSafeSingleton {
    private static ThreadSafeSingleton instance = null;

    private ThreadSafeSingleton(){}

    // 同步关键字 synchronized
    public static synchronized ThreadSafeSingleton getInstance(){if(instance == null){instance = new ThreadSafeSingleton();
        }
        return  instance;
    }

}

5)枚举单例

这种办法简略,便捷。

public enum  EnumSingleton {
    INSTANCE;

    public static void doSomething(){//do something}
}

特点:

1)单例类只能有一个实例。

2)单例类必须本人创立本人的惟一实例。

3)单例类必须给所有其余对象提供这一实例。

二,工厂模式:


工厂模式包含:

1)简略工厂模式

又称为动态工厂办法模式,它属于类创立型模式。在简略工厂模式中,能够依据参数的不同返回不同类的实例。简略工厂模式专门定义一个类来负责创立其余类的实例,被创立的实例通常都具备独特的父类。

  • 将创立实例的工作与应用实例的工作离开,使用者不用关怀类对象如何创立,实现理解耦;
  • 把初始化实例时的工作放到工厂里进行,使代码更容易保护。更合乎面向对象的准则 & 面向接口编程,而不是面向实现编程。

2)工厂办法模式

工厂办法是针对每一种产品提供一个工厂类,通过不同的工厂实例来创立不同的产品实例。次要解决了简略工厂模式违反了“凋谢 – 敞开准则”的问题。

长处:

  • 更合乎开 - 闭准则,新增一种产品时,只须要减少相应的具体产品类和相应的工厂子类即可
  • 合乎繁多职责准则,每个具体工厂类只负责创立对应的产品

3)形象工厂模式

形象工厂模式容许应用形象的接口来创立一组相干产品,而不须要晓得或关怀理论生产出的具体产品是什么,这样就能够从具体产品中被解耦。

长处:

  • 升高耦合。形象工厂模式将具体产品的创立提早到具体工厂的子类中,这样将对象的创立封装起来,能够缩小客户端与具体产品类之间的依赖,从而使零碎耦合度低,这样更有利于前期的保护和扩大;
  • 更合乎开 - 闭准则。新增一种产品类时,只须要减少相应的具体产品类和相应的工厂子类即可。

设计模式六大准则:

  • 繁多职责准则:

    繁多职责准则示意一个模块的组成元素之间的性能相关性。艰深地说,一个类只负责一项职责。

    目标:

    1)升高类的复杂度

    2)进步零碎的可维护性

    3)批改时升高危险溢出

  • 里氏替换准则:

    所有援用基类的中央必须能通明地应用其子类对象,子类在扩大父类性能时不能毁坏父类原有的性能。

  • 接口隔离准则:

    一个类对另一个类的依赖应该建设在最小的接口上。

  • 依赖倒置准则:

    依赖:成员变量、办法参数、返回值要依赖于形象,不要依赖于具体。高层模块不应该依赖低层模块,二者都应该依赖于其形象。

  • 迪米特准则:

    一个对象应该与其余对象放弃起码的理解。

  • 开闭准则:

    对扩大凋谢,对批改敞开,通过扩大已有软件系统,能够提供新的性能,批改的敞开,保障稳定性和延续性。

正文完
 0