设计模式学习摘要-抽象工厂
2007-04-10 15:03
190 查看
以日志记录实现为例:
具体实现日志类
1。定义一个抽象的日志Log
public abstract class Log
{
public abstract void Write();
}
2。定义两个具体的日志类
public class EventLog:Log
{
public override void Write()
{
Console.WriteLine("EventLog write sucess !");
}
}
public class FileLog:Log
{
public override void Write()
{
Console.WriteLine("FileLog write sucess !");
}
}
具体实现工厂类
1。定义一个抽象工厂类LogFactory
public abstract class LogFactory
{
public abstract Log Create();
}
2。定义两个具体的工厂类
public class EventFactory:LogFactory
{
public override EventLog Create()
{
return new EventLog();
}
}
public class FileFactory:LogFactory
{
public override FileLog Create()
{
return new FileLog();
}
}
应用程序中调用
public class App
{
public static void Main(string[] args)
{
LogFactory factory=new EventFactory();//
Log log=factory.Create();//
log.Write();
}
}
利用发射机制进一步修改
<appSettings>
add key="factoryName" value="EventFactory"></add>
</appSettings>
pubic class App
{
public static void Main(string[] args)
{
string strfactoryName = ConfigurationSettings.AppSettings["factoryName"];
LogFactory factory;
factory = (LogFactory)Assembly.Load("FactoryMethod").CreateInstance("FactoryMethod." + strfactoryName);
Log log = factory.Create();
log.Write();
}
}
参考资料:
http://terrylee.cnblogs.com/archive/2006/01/04/310716.html
具体实现日志类
1。定义一个抽象的日志Log
public abstract class Log
{
public abstract void Write();
}
2。定义两个具体的日志类
public class EventLog:Log
{
public override void Write()
{
Console.WriteLine("EventLog write sucess !");
}
}
public class FileLog:Log
{
public override void Write()
{
Console.WriteLine("FileLog write sucess !");
}
}
具体实现工厂类
1。定义一个抽象工厂类LogFactory
public abstract class LogFactory
{
public abstract Log Create();
}
2。定义两个具体的工厂类
public class EventFactory:LogFactory
{
public override EventLog Create()
{
return new EventLog();
}
}
public class FileFactory:LogFactory
{
public override FileLog Create()
{
return new FileLog();
}
}
应用程序中调用
public class App
{
public static void Main(string[] args)
{
LogFactory factory=new EventFactory();//
Log log=factory.Create();//
log.Write();
}
}
利用发射机制进一步修改
<appSettings>
add key="factoryName" value="EventFactory"></add>
</appSettings>
pubic class App
{
public static void Main(string[] args)
{
string strfactoryName = ConfigurationSettings.AppSettings["factoryName"];
LogFactory factory;
factory = (LogFactory)Assembly.Load("FactoryMethod").CreateInstance("FactoryMethod." + strfactoryName);
Log log = factory.Create();
log.Write();
}
}
参考资料:
http://terrylee.cnblogs.com/archive/2006/01/04/310716.html
相关文章推荐
- 设计模式学习笔记:Abstract Factory(抽象工厂)
- 设计模式学习之简单工厂(simple facotry)、工厂方法(actory method)、抽象工厂(abstract factory)
- C# 设计模式学习三 Abstract Factory 抽象工厂(实例)
- 设计模式学习总结(3) 抽象工厂
- Java设计模式学习笔记摘要
- 设计模式学习之抽象工厂(Abstract Factory,创建型模式)(3)
- 设计模式学习(二)之工厂模式(简单工厂+工厂方法+抽象工厂)
- 设计模式学习草稿:简单工厂,工厂,抽象工厂
- JAVA设计模式学习之----创建模式:工厂模式(抽象工厂)
- 设计模式学习-抽象工厂(Abstract Factory)
- 设计模式学习---Abstract Factory(抽象工厂)
- 阿Sam的设计模式学习笔记----抽象工厂(Abstract Factory)模式
- 设计模式学习笔记——抽象工厂(Abstract Factory)模式
- 【设计模式学习笔记三】【创建型模式】【抽象工厂(Abstract Factory)】
- 设计模式学习-抽象工厂(Abstract Factory)
- 设计模式学习笔记——抽象工厂(Abstract Factory)模式
- 设计模式学习笔记五:抽象工厂(Abstract Factory)
- 跟着实例学习设计模式(4)-抽象工厂(创建型)
- 步步为营 .NET 设计模式学习笔记 二、Abstract Factory(抽象工厂)
- 【软考学习】设计模式——抽象工厂