java充血实体类_利用委托实现充血实体类

本文探讨了实体类是否应该包含操作,并通过C#代码示例展示了如何使用委托为KiWing框架的缺血模式实体类添加操作功能。作者通过定义委托类型,实现了在业务处理类中注册和调用保存方法,以此来扩展实体类的行为。
摘要由CSDN通过智能技术生成

最近一直在想实体类应不应该具有操作,还是如以往的一样是缺血模式的实体类呢,目前KiWing框架用的是缺血模式的实体类(缺血实体类指那些只有属性而没有方法的实体类),于是将现有的实体类利用委托进行了改写,代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using KiWing.CustomAttribute;

using KiWing.Helper.Attribute;

namespace KiWing.Test

{

class Program

{

[Table("Table1","Identifier","table1Insert","table1update","table1delete","table1select")]

public class Test

{

///

/// 委托保存方法列表

///

private SaveMethod saveList;

public int Identifier { get; set; }

public string TestName { get; set; }

///

/// 委托保存方法

///

///

///

public delegate int SaveMethod(Test test);

///

/// 注册保存委托方法

///

///

public void AddSaveMethod(SaveMethod method)

{

saveList += method;

}

///

/// 删除已经注册的委托方法

///

///

public void RemoveSaveMethod(SaveMethod method)

{

saveList -= method;

}

///

/// 保存方法

///

///

public int Save()

{

if (saveList != null)

return saveList(this);

return 1;

}

}

public class Area

{

}

///

/// 业务处理类

///

public class Business

{

public int Save(T obj) where T : class

{

Console.Write("Business Save {0}!",typeof(T).Name);

return 1;

}

}

static void Main(string[] args)

{

//实例化实体类

Test test = new Test();

//属性赋值

test.Identifier = 1;

test.TestName="Test";

//创建业务逻辑对象

Business business=new Business();

//注册委托方法

test.AddSaveMethod(business.Save);

//保存数据

test.Save();

Console.Read();

}

}

}

希望听听大家的意见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值