工厂方法+配置文件+反射

  1.通过配置+反射,可以实现“开放封闭”原则,对扩展开放,对修改封闭。

  2.易维护,通过分层,将程序进行分层,进行职责划分。

  3.可用性提高。单独维护一个DLL文件即可。可以实现插拔操作。

 

  工厂方法+配置文件+反射,主要是一种思路的体现,通过这种方式可以扩展我们的思维方式。

  

  1.Yang.ISQL

  数据库操作的接口,作为Yang.MSSQL、Yang.Oracle的标准,所有在业务逻辑层的调用全部使用这个接口。  

using Yang.Model;

namespace Yang.ISQL
{
public interface IOrder
{
string Add(Order entity);
string Update(Order entity);
}
}

  2.Yang.MSSQL

  实现Yang.ISQL,实现MSSql的数据库插入、修改、查询,等操作。

using Yang.ISQL;
using Yang.Model;

namespace Yang.MSSQL
{
public class OrderBO : IOrder
{
public string Add(Order entity)
{
return "插入 MSSQL" + entity.OrderNO + ";" + entity.TotalMoney;
}

public string Update(Order entity)
{
return "更新 MSSQL" + entity.OrderNO + ";" + entity.TotalMoney;
}
}
}

  3.Yang.Oracle

  实现Yang.ISQL,实现Oracle的数据库插入、修改、查询,等操作。 

using Yang.ISQL;
using Yang.Model;

namespace Yang.Oracle
{
public class OrderBO : IOrder
{
public string Add(Order entity)
{
return "插入 Oracle" + entity.OrderNO + ";" + entity.TotalMoney;
}

public string Update(Order entity)
{
return "更新 Oracle" + entity.OrderNO + ";" + entity.TotalMoney;
}
}
}

   4.Yang.Model

  模型、实体层,所有的数据操作都是通过实体来进行操作。

using System;

namespace Yang.Model
{
public class Order
{
public string OrderNO { get; set; }
public decimal TotalMoney { get; set; }
public DateTime AddDateTime { get; set; }
}
}

  5.Yang.Configuration

   配置文件。主要实现方法配置文件的作用,可以参考:自定义配置文件读取

  6.AbstractFactory 

  测试,实用。

  配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="PersistenceSection" type="Yang.Configuration.PersistenceProperty, Yang.Configuration"/>
</configSections>
<PersistenceSection>
<Persistences>
<Persistence PropertyName="Order" PropertyValue="Yang.MSSQL.OrderBO, Yang.MSSQL" ></Persistence>
<Persistence PropertyName="Customer" PropertyValue="Yang.Oracle.CustomerBO, Yang.Oracle"></Persistence>
</Persistences>
</PersistenceSection>
</configuration>

调用,使用:

[Test]
public void Test2()
{
var customer
= new Customer {CustomerNO = "c001", FullName = ""};
var order
= new Order {OrderNO = "D001", TotalMoney = 20.55m};
var sql
= IOrderMSSQL;
sql.Add(order);

var orcale
= ICustomerOrcale;
orcale.Add(customer);
}

private IOrder IOrderMSSQL
{
get
{
PersistenceProperty property
=
(PersistenceProperty) ConfigurationManager.GetSection(ConfigName.PersistenceSection);
PersistenceElementCollenction collection
= property.GetElementCollection;
var item
= collection["Order"];
string clasName = item.EntityClass;
var type
= Type.GetType(clasName);
return Activator.CreateInstance(type) as IOrder;
}
}

private ICustomer ICustomerOrcale
{
get
{
PersistenceProperty property
=
(PersistenceProperty)ConfigurationManager.GetSection(ConfigName.PersistenceSection);
PersistenceElementCollenction collection
= property.GetElementCollection;
var item
= collection["Customer"];
string clasName = item.EntityClass;
var type
= Type.GetType(clasName);
return Activator.CreateInstance(type) as ICustomer;
}
}

 

配置调用数据,反射创建实体,接口调用(规范化)。

下载源代码:文件下载

posted @ 2010-08-15 13:02  13路易的  阅读(918)  评论(1编辑  收藏  举报