zoukankan      html  css  js  c++  java
  • 单列模式 和 操作XML方法 和 简单工厂模式

    一.单列模式

      1)首先,该Singleton的构造函数必须是私有的,以保证客户程序不会通过new()操作产生一个实例,达到实现单例的目的;

      2)因为静态变量的生命周期跟整个应用程序的生命周期是一样的,所以可以定义一个私有的静态全局变量instance来保存该类的唯一实例;

      3)必须提供一个全局函数访问获得该实例,并且在该函数提供控制实例数量的功能,即通过if语句判断instance是否已被实例化,如果没有则可以同new()创建一个实例;否则,直接向客户返回一个实例。

      在这种经典模式下,没有考虑线程并发获取实例问题,即可能出现两个线程同时获取instance实例,且此时其为null时,就会出现两个线程分别创建了instance,违反了单例规则。因此,需对上面代码修改。

    二.操作XML方法

    向文件中添加新的数据的时候,首先也是通过XmlDocument加载整个文档,然后通过调用SelectSingleNode方法获得根结点,通过CreateElement方法创建元素,用CreateAttribute创建属性,用AppendChild把当前结点挂接在其它结点上,用SetAttributeNode设置结点的属性.具体代码如下:

    三.简单工厂模式

     public class Operation
        {
            //public static Program GetInlt(string oper) {
            //    Program pro = null;
            //    switch (oper)
            //    {
            //        case "+":
            //            pro =add() ;
            //            break;
            //        case "-":
            //            pro = lid();
            //            break;
            //        case "*":
            //            pro = milte();
            //            break;
            //        case "/":
            //            pro = div();
            //            break;
    
            //        default:
            //            break;
            //    }
            //    return pro;
            //}
        }
    

      

    简单工厂的优点只要如下:

    ①实现了对象的创建和使用职责的分离

    ②客户端无须知道具体的类名,只需要使用就行,也在一定程度上减轻了复杂对象名称的记忆量。

    ③通过引入配置文件,可以在不修改客户端代码的情况下更换和增加新的具体类,提高了灵活性。

    简单工厂的缺点如下:

    ①工厂集中了所有具体类的创建工作,职责过重,一旦抛出异常,整个系统会受到影响。

    ②使用简单工厂模式势必会增加系统种类的个数,也就增加了系统的复杂度和理解难度。

    ③系统扩展困难,一旦要增加新的具体类,就不得不修改工厂类的逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护。

    ④简单工厂模式由于使用了静态的方法,造成工厂角色无法形成基于继承的等级结构,在C#语言中,类的实例没有办法访问静态方法和静态的变量,无法在客户端代码中针对工厂父类编程,二在运行时使用工厂子类来覆盖父类,因此,工厂类不能得到很好的扩展。

     简单工厂的使用环境:

    ①工厂类负责创建的对象比较少,由于创建的对象比较少,所以不会造成逻辑过于复杂。

    ②客户端只知道传入工厂类的参数,对于如何创建对象并不关心。

  • 相关阅读:
    点击按钮生成遮罩层后这个按钮被遮住还可以点击解决办法
    关于jq的load不用回调获取其中dom元素方法
    移动端默认返回按键,使用h5+修改默认事件
    移动端解决input focus后键盘弹出,高度被挤压的问题
    模拟移动端上拉超过页面实际高度
    软工作业
    一周进度汇报
    alhpa阶段回顾
    一周进度汇报
    一周进度汇报
  • 原文地址:https://www.cnblogs.com/1287758807cjh/p/8296789.html
Copyright © 2011-2022 走看看