保证一个类仅有一个实例,并提供一个访问它的全局访问点

只保证一个实例的存在,减少不必要的内存开销,和命名的冲突

  1. class Axios{
  2. constructor(){}
  3. get({url, params}){
  4. return new Promise( resolve =>{
  5. resolve('请求成功!')
  6. })
  7. }
  8. post({url, params}){
  9. return new Promise( resolve =>{
  10. resolve('请求成功!')
  11. })
  12. }
  13. }
  14. let instance = null;
  15. export default function AxiosInstance(){
  16. if(!instance){
  17. instance = new Axios()
  18. }
  19. return instance;
  20. }

总结:

优点

  • 只存在一个实体、所有对象访问的都是一个实例
  • 避免共享资源的多重占用,需要频繁创建和销毁的对象时单例模式无疑可以提高系统的性能

缺点

  • 不适合变化的对象、数据的初始化
  • 扩展性不好
  • 单例类的职责过重,在一定程度上违背了“单一职责原则”

    单例模式在于只存在一个类的实例、只会实例化一次、并且把一些方法都独立成命名空间的形式、这样好处在于方法名称不会和别的冲突!