c#设计模式—-工厂方法模式

工厂方法模式是一种类创建型模式.在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类.

工厂方法模式包含以下4个角色:

(1)抽象产品:它是定义产品的接口.

(2)具体产品:它是实现抽象产品的接口的类.

(3)抽象工厂:在抽象工厂类或接口中声明了工厂方法,用于返回一个产品.抽象工厂是工厂方法模式的核心,所有创建对象的工厂类都必须实现该接口.

(4)具体工厂:它是抽象工厂类的子类.

以下为一个实例的演示代码:


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

namespace ConsoleApplication2
{
 interface Logger//抽象产品接口
 {
 void WriteLog();
 }
 class DatabaseLogger : Logger//数据库日志记录类
 {
 public void WriteLog()
 {
 Console.WriteLine("数据库日志记录");

}

 }
 class FileLogger : Logger//文件日志记录类
 {
 public void WriteLog()
 {
 Console.WriteLine("文件日志记录");

}

}

interface LoggerFactory//抽象工厂接口
 {

Logger CreateLogger();//抽象工厂方法

}
 class DatabaseLoggerFactory : LoggerFactory//数据库日志记录工厂类
 {
 public Logger CreateLogger()
 {
 Logger logger = new DatabaseLogger();

return logger;

}

 }
 class FileLoggerFactory : LoggerFactory//文件日志记录工厂类
 {

public Logger CreateLogger()
 {
 Logger logger = new FileLogger();

return logger;
 }

}
 class Program
{

 static void Main(string[] args)
 {
 LoggerFactory factory;//定义抽象工厂类对象引用;
 Logger logger;//定义产品抽象类对象引用;
 factory = new FileLoggerFactory();//创建文件日志记录工厂对象;
 logger = factory.CreateLogger();//创建文件日志记录对象
 logger.WriteLog();
 factory = new DatabaseLoggerFactory();//创建数据库日志记录工厂对象;
 logger = factory.CreateLogger();//创建数据库日志记录对象
 logger.WriteLog();
 Console.ReadKey();

}

 }
}

运行结果如下: