创建单件函数_任何类都可单件

该博客介绍了一种通过外部函数控制单例模式的方法,以解决在多个类中实现单例并保持低耦合的问题。代码示例展示了如何利用C#创建一个通用的单例获取函数,该函数能为任何传入的类类型返回其单例实例。这种方式允许在不使用继承的情况下,确保每个类都能以单例形式存在。

情景

想要是用单件模式,降低系统的耦合,即一个对象创建后再哪里都可以使用。不需要与任何 使用他的类建立关系。单是我还想使用接口,如果用继承的方式来实现每个类都是单件无法实现。所以我想能不能在外层控制呢,就是通过一个函数调用,单一个函数调用每个类型的时候,控制 这个类型的单件,与是有了这个实践。

代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace 创建单件函数_任何类都可单件
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("创建单件函数_任何类都可单件");
            Sigleton sigleton = new Sigleton();
            string typeName = typeof(A).FullName;
            A a2 = (A)sigleton.getMy(typeName);
            a2.fun();
            Console.ReadKey();
        }
    }
    class Sigleton {
        Dictionary<string, Object> keyValuePairs = new Dictionary<string, object>();
        object o;
        public Object getMy(string type)
        {
            Assembly assembly = Assembly.GetExecutingAssembly(); // 获取当前程序集
            try
            {
                object o = keyValuePairs[type];
            }
            catch (Exception ex) { 
            
            }
            
            if (o == null) {
                o = assembly.CreateInstance(type);
            }
            return o;
        }
    }
    class A {
        public void fun() {
            Console.WriteLine("我是a");
        }
    }
    class B {
        public void fun() {
            Console.WriteLine("我是B");
        }   
    }

    
}

运行

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值