美文网首页
C#笔记——工厂方法模式结合委托实例

C#笔记——工厂方法模式结合委托实例

作者: 私_念_ | 来源:发表于2016-03-20 01:21 被阅读128次

定义场景:保存日志功能,分为:文本形式和数据库形式;

定义日志基类:

///

/// 日志

///

public class LogEntity

{

///

/// 保存

///

public virtual void DoSave() {  }

///

/// 显示

///

public virtual void DoShow() {  }}

扩展基类:

///

/// 文本方式日志

///

public class TxtLogEntity : LogEntity

{

public override void DoSave()

{

Console.WriteLine("save to txt");

}

public override void DoShow()

{

Console.WriteLine("show log as txt");

}

}

///

/// 数据库方式日志

///

public class DBLogEntity : LogEntity

{

public override void DoSave()

{

Console.WriteLine("save to db");

}

public override void DoShow()

{

Console.WriteLine("show log as db");

}}

定义日志创建接口:

///

/// 日志创建接口

///

public interface ILogCreator

{

LogEntity CreateLogFactory();}

实现接口:

public class TxtLogCreator : ILogCreator

{

public LogEntity CreateLogFactory()

{

return new TxtLogEntity();

}

}

public class DBLogCreator : ILogCreator

{

public LogEntity CreateLogFactory()

{

return new DBLogEntity();

}}

利用委托实现工厂:

///

/// 工厂创建委托

///

///

///

public delegate LogEntity LogEntityCreateFunc(string type);

public static class LogEntityCreateFactory

{

///

/// 创建日志实体

///

///

///

///

public static LogEntity CreateEntity(string aType, LogEntityCreateFunc createFunc)

{

return createFunc(aType);

}}

客户端调用:

static void Main(string[] args)

{

LogEntity log = LogEntityCreateFactory.CreateEntity("txt", MyCreateFunc);

log.DoSave();

log.DoShow();

Console.ReadKey();

}

///

/// 自定义工厂创建方式

///

///

///

static LogEntity MyCreateFunc(string aType)

{

if (aType == "txt")

{

return (new TxtLogCreator()).CreateLogFactory();

}

else if (aType == "db")

{

return (new DBLogCreator()).CreateLogFactory();

}

else

{

return null;

}}

优点:

1.充分体现了依赖倒置原则, 日志创建接口的设计,保证了最大的可扩展度,即如果日后需要实现一个基于第三方的日志功能,只需要实现接口即可,不需要修改原代码;

2.利用委托的特性,可以自定义创建规则,采用十分灵活的注入方式,最大化的解除了业务逻辑和代码的耦合。

相关文章

  • C#笔记——工厂方法模式结合委托实例

    定义场景:保存日志功能,分为:文本形式和数据库形式; 定义日志基类: /// /// 日志 /// public ...

  • 设计模式(1) 工厂方法模式

    创建型模式 简单工厂模式 工厂方法模式IOC与工厂方法模式的结合泛型工厂委托工厂 创建型模式 创建型模式可以隔离客...

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 工厂方法模式

    一、工厂方法模式介绍 二、工厂方法模式代码实例

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

  • C#委托 匿名函数 Lambda

    C# 中委托的发展#在 C# 1.0 中,通过使用在代码中其他位置定义的方法显式初始化委托来创建委托的实例。 C#...

  • 1: 简单工厂模式

    一. 基本概念 定义 实例化对象,用工厂方法代替new操作 工厂模式包括工厂方法模式和抽象工厂模式 抽象工厂模式是...

  • 简单工厂模式、工厂模式

    简单工厂模式类图 工厂方法模式类图 比较 简单工厂模式包含生成类实例的判断逻辑,工厂方法模式把判断...

  • Spring Bean的三种管理方式

    1.使用类构造器实例化(默认无参数) 2.使用静态工厂方法实例化(简单工厂模式) 3.使用实例工厂方法实例化(工厂...

  • 设计模式之工厂方法模式

    场景1: 场景2: 工厂模式的概念 实例化对象,用工厂方法代替 new 操作。工厂模式包括工厂方法模式和抽象工厂模...

网友评论

      本文标题:C#笔记——工厂方法模式结合委托实例

      本文链接:https://www.haomeiwen.com/subject/jkohlttx.html