C# 简单工厂模式-弱耦合

例子结构:

MessageAll(消息抽象类)代码详情:

public abstract class MessageALL
{
      /// <summary>
      /// 发送消息
      /// </summary>
      public abstract void sentMessage();
}

   

MessageFactory(消息工厂类)代码详情:

    public class MessageFactory
    {
        public static MessageALL GetMessage<T>() {
            string realname = typeof(T).FullName;
            MessageALL messageALL = null;
            Assembly assembly = Assembly.GetExecutingAssembly();
            messageALL =(MessageALL)assembly.CreateInstance(realname);
            messageALL.sentMessage();
            return messageALL;
        }
    }

QQMessage与WXMessage类中是实现消息抽象类中的抽象方法这里我只列出一个类的实现:

 public class QQMessage : MessageALL
    {
        public override void sentMessage()
        {
            Console.WriteLine("发送qq消息中。。。。");
        }
    }

如何调用:

public void Utils(string value)
{
       MessageALL messageALL=MessageFactory.GetMessage<QQMessage>();
       Console.ReadKey();
}

说明思路:

这里我们需要创建一个抽象父类,再在抽象类中建立一些公共调用的抽象方法,子类继承并实现父类的抽象方法,再通过工厂类进行通用的实例化处理,这里我使用的是泛型的方式传递需要实例化的类,然后通过Assembly加载并实例化子消息类。在整个过程中避免了使用new来实例化对象。

作用:

           个人理解有点像,过去的接线员(喂喂喂~我需要给张三打电话麻烦转接下),我们需要给那个人打电话就由接线员帮你转接。接线员的作用就与我们工厂类极像,我们需要实例化什么消息类型的类,那么我们的工厂类根据T的获取到的命名空间,创建对于的对象实例。

PS:本人菜鸟一枚,希望在我们程序员生涯留下点什么。若有啥不对或者待优化的地方,希望各位赐教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值