单例模式 组合模式 观察者模式 工厂模式 (弃用)

111 阅读4分钟

单利模式:

  • 设计模式: 就是计算机程序中为了解决指定问题优化之后的代码程序;
  • 概念: 构造函数多次调用只生成一个实例化对象;不是每次调用生成不同的实例化对象;
  • 使用目的: 多次调用构造函数就创建一个实例化对象;
  • 单例模式核心: 之前设定给实例化对象的属性属性值,现在设定成函数方法的形式实参;
  • 参数少,程序简单的实例化对象,更适合写成单例模式;

组合模式:

  • 概念: 多个实例化对象的入口函数的一次性调用;
  • 组合模式的功能:
  1. 向组合模式中 新增 要控制的实例化对象;
     一次可以新增一个实例化对象或者多个实例化对象.
     已经存在的实例化对象不会再次重复新增
  1. 向数组模式中删除 要控制的实例化对象;
    一次可以删除一个已经添加的实例化对象或者多个已经添加的实例化对象.
    没有添加的实例化对象不会触发删除操作
    
引发问题: 数组坍塌现象

   如果循环要删除的实例化对象的数组,删除已经添加实例化对象的数组,不会因为数组坍塌影响程序的操作,循环的数组和删除的数组不是一个数组;
   
   如果循环已经添加实例化对象的数组删除已经添加的实例化对象的数组,因为循环的和删除的是同一个数组,很有可能因为数组坍塌引起程序执行结果有问题; 
   循环时如果触发删除操作需要执行 i-- 再次循环触发数组单元删除操作的位置;
  1. 一键启动所有添加的实例化对象;

观察者模式:

  • 作用: 当主体对象的状态发生变化时,能够自动通知其他关联个体对象,自动刷新对象状态,当然如果个体状态发生改变,主体程序也要做相关的对应操作.这是一种一对多的依赖关系;
  • 主要组成部分:
 1,       消息盒子    本质是一个对象 

                    对象的键名
                        事件类型

                    对象的键值
                        事件处理函数 以数组的形式存储

                2,  新增
                    重复的事件处理函数 不要重复添加 

                3,  删除
                    已经存在的事件处理函数 再执行删除操作

                4,  清空
                    赋值空对象 

                5,  执行
                    已经添加的事件处理函数 再执行操作
        

工厂模式:

  • 概念: 广泛应用于软件工程领域,用于抽象创建特定对象的过程。工厂模式是一种创建型模式,简单来说,工厂模式就是创建对象的一种方式。
  • 作用: 创建对象;降低代码冗余度。

设计模式的优缺点:

单例模式:

  • 优点:
  1. 划分命名空间,减少全局变量;
  2. 增强模块性,把自己的代码组织在一个全局变量命名下,放在单一位置,便于维护并且只会实例化一次.
  3. 简化了代码的调试和维护;
  • 缺点:
  1. 由于单例模式提供的是一种单点访问,所以它有可能导致模块间的强耦合,从而不利于单元测试;
  2. 无法单独测试一个调用了来自单例的方法的类,而只能把它和那个单例作为一个单元一起测试;

观察者模式:

  • 优点:
  1. 支持简单的广播通信,自动通知所有已经订阅过的对象;
  2. 目标对象和观察者之间的抽象耦合关系能单独扩展以及重复使用;
  3. 增强了灵活性;
  4. 观察者模式所做的工作就是在解耦,让耦合的双方都依赖于抽象,而不是依赖于具体.从而使得各自的变化都不会影响到另一边的变化;
  • 缺点:
  1. 过度使用会导致对象与对象之间的联系弱化,会导致程序难以跟踪维护与理解;

垃圾回收机制:

  • 概念:垃圾回收机制是动态管理技术,会自动的释放"垃圾"(不再被程序引用的对象),按照特定的垃圾收集算法来实现资源自动回收的功能,垃圾回收机制会按照固定的时间间隔周期性的执行;
  • 回收垃圾的两种机制:
  1. 标记清除法(make-and-sweep):先遍历所有空间,将能访问到的数据空间做标记,再次遍历所有的空间,将没有做标记的数据空间清除掉;
  2. 标记整理法:先将所有能访问到的数据空间放在最前边,将所有访问不到的数据空间排列在后边,然后进行标记清楚;
  3. 引用计数:数据每次被引用一次,就计数一次,当计数为0的时候,清除数据空间;