A class with only a single instance with global access points. 保证类仅仅只有一个实例,并且只提供一个访问它的全局点。


    适用:

    • 类只能够有一个实例,切客户只能够从一个众所周知的访问点访问它的时候。
    • 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能够用一个扩展的实例时。

    效果:

    • 对唯一实例的受控访问。
    • 缩小命名空间。
    • 允许对操作和表示的精细化。
    • 允许可变数目的实例。
    • 比类操作更灵活。
    1. let LazySingle = (function () {
    2. let instance = null;
    3. function Single() {
    4. return {
    5. getter: () => {},
    6. setter: () => {}
    7. }
    8. }
    9. return function () {
    10. if (instance === null) {
    11. instance = new Single();
    12. }
    13. return instance
    14. }
    15. })();

    or the modern one

    1. let appInstance = null;
    2. class App {
    3. constructor() {
    4. if (appInstance) return appInstance;
    5. // ...
    6. appInstance = this;
    7. }
    8. }
    9. export default App;