扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
public class Customer{ // 私有数据成员 String _customerId; String _companyName; String _contactName; String _contactTitle; public Customer() { } // Customer对象的属性 public String CustomerId { get { return _customerId; } set { _customerId = value; } } public String CompanyName { get { return _companyName; } set { _companyName = value; } } public String ContactName { get { return _contactName; } set { _contactName = value; } } public String ContactTitle { get { return _contactTitle; } set { _contactTitle = value; } }}public interface ICustomerFactory{ // 用于单行操作的标准事务方法 void Load(Customer cust); void Insert(Customer cust); void Update(Customer cust); void Delete(Customer cust); // 返回集合的查询方法 ArrayList FindCustomersByState(String state);}public class CustomerFactory : ICustomerFactory{ //用于单行操作的标准事务方法 void Load(Customer cust) { /* Implement here */ } void Insert(Customer cust) { /* Implement here */ } void Update(Customer cust) { /* Implement here */ } void Delete(Customer cust) { /* Implement here */ } //返回集合的查询方法 ArrayList FindCustomersByState(String state) { /* 此处是实现代码 */ }}
下面的示例演示了客户端如何使用这段代码。
public class NorthwindApp{ static void Main(string[] args) { Customer cust = new Customer(); CustomerFactory custFactory = new CustomerFactory(); //从Northwind数据库载入客户 cust.CustomerId = "ALFKI"; custFactory.load(cust); // 传递 Customer 对象 FooBar(cust); // custList是Customer对象列表 ArrayList custList = custFactory.FindCustomersByState("CA"); }}
在上面代码中,load方法根据CustomerID(应用程序可以把这个值传递到任何子系统中而不需要暴露持续性代码)从数据库中载入Customer对象。同样,如果你载入Customer对象的数组列表,你随后也可以传递数组列表,也没有持续性代码依赖。
使用域对象持续模式分离持续性代码和Customer对象,使得Customer对象更加面向对象,更易于理解,因为它的对象模型更加接近于数据库中的数据模型。此外,这种分离使你能够把Customer传递到应用程序的不同部分(甚至于通过.NET Remoting传递到分布式应用程序),而不需要暴露持续性代码。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1682090
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者