单例模式怎么实现接口与实现分离?例如有一个全局对象需要做成单例模式,这个对象是在A模块中定义和实现,现在需要在B模块中实例化, 而B模块又不会直接引用A模块, 应该怎么做呢?两个模块之间可以有一个公共接口层,但B模块绝对是不知道A对这个单例对象的具体实现的!

解决方案 »

  1.   

    单件模式是全局可访问的,他在整个程序中就唯一一个实例。在A,B模块都可以对他进行操作啊。有什么问题呢。
    获取单件对象,是使用的静态函数,A,B模块都可以调用获取,得到的是同一个实例。
      

  2.   

    没有办法出生的晚,csdn必须我们出生时有个统一身份证号,看起来蛮可爱,***家族
      

  3.   

    比如说,一个程序引用了 System.Data.Common.DbProviderFactory 来进行所有操作设计,它是用一个反射来获取符合这个类型的对象实例。那么你就说“我引用 DbProviderFactory”这就对了。假设你自己引用了DbProviderFactory,并且有上千行代码与之直接相关。而你整天唠叨说“我没有直接引用 SqlClientFactory”,“我没有直接引用OleDbFactory”,这就等于是跟你自己的程序唱对台戏。
      

  4.   

    MVP级别的也就值20分啊,连默认值都没达到啊,唉,小菜鸟可以去死了
      

  5.   


    很简单的需求, 比如我正设计一个客户端的框架, 业务模块以插件的形式集成到主框架中, 业务模块是独立的,但又需要访问框架的一些对象来得到一些全局的信息,如用户登录上下文, 正常当然在框架实例化业务模块的时候传入一个对象,业务模块保留这个对象的引用来访问, 但是这样编码和开发很麻烦, 我需要的是直接在业务模块中以LoginContext.Current这样的访问方式来得到当前的上下文, 而这个LoginContext又是框架实现的, 当然不可能把具体的实现暴露给业务模块, 那么我就需要这么一个设计模式来实现, 说了这么通俗了,你能理解了吧?
      

  6.   

    一个菜鸟在要求帮助他的人必须是MVP级别的,什么逻辑?
      

  7.   

    既然是主框架,LoginContext.Current为什么 不可能暴露给业务模块。
    引用是耦合,难道 配置+反射 就不耦合了?这不是自找麻烦吗?
      

  8.   

    既然是主框架,LoginContext.Current为什么 不可能暴露给业务模块。
    引用是耦合,难道 配置+反射 就不耦合了?这不是自找麻烦吗?可以通过接口的形式暴露.
      

  9.   

    首先用32楼的依赖注入使用单例就可以实现,而且A也没有必要设计成单例模式,完全由依赖注入组件实现。既然敢喷几个大神级别的人物,真是后生可畏啊~
    从你的描述来说,是有问题的
    单例模式只有一个封装好的提供对象的方法,其他类都不知道单例的实现方式,甚至不知道是单例的,只知道有个类可以提供某对象。我需要对象,就找该类拿,至于它是不是每次从内存分配一个对象给我,还是只提供一个对象给需要的人,我完全不知道。MVP也不是特别牛叉的人物。MVP的评定是:推广微软技术的人
      

  10.   


    这是一个需求, 你没能力实现就别说图纸蹩脚,OK?
    哦,呵呵,呵呵。
    我操MVP都答不出来,我要答出来不就超越MVP了么,可是我也答不出来,我甚至压根就看不懂你问的什么
      

  11.   


    这是一个需求, 你没能力实现就别说图纸蹩脚,OK?
    哦,呵呵,呵呵。
    哦,呵呵,呵呵。
    我要盖3层楼 2楼是空的 只有1楼和3楼 就按照这个设计 请问怎么砌砖。
    这是一个需求, 你没能力实现就别说图纸蹩脚,OK?
    问题很难,估计外星人才能解决
      

  12.   


    这是一个需求, 你没能力实现就别说图纸蹩脚,OK?
    哦,呵呵,呵呵。
    哦,呵呵,呵呵。
    我要盖3层楼 2楼是空的 只有1楼和3楼 就按照这个设计 请问怎么砌砖。
    这是一个需求, 你没能力实现就别说图纸蹩脚,OK?
    问题很难,估计外星人才能解决
    #¥%(*&¥%%¥%……&)#%¥(*&…………&#¥&*
    给你们翻译一下上面这段话,“我是外星人,我也不知道怎么解决,好受挫。”
      

  13.   

    原来菜鸟和MVP差距这么大啊,我都看不懂什么意思。