独自幸福快乐京巴犬怎么训练做动作北京犬动作训练方法依依不舍孤独
时间:2020-06-29 20:31:50 来源:西贡环保厂家 浏览量:2
在业务系统的开发过程中,为了保证页面风格的一致性以及减少重复代码的编写,我们需要引入基类页的概念,即:定义一个基类页,让所有的页面都继承这个基类,并在该基类页中加入公用的属性和方法。
实际使用时,按照功能页面划分,可以定义多个基类页,如:
class FormBase
class BizFormBase :FormBase
class ViewFormBase : BizFormBase
class EditFormBase : BizFormBase
class QueryFormBase : FormBase
FormBase:基类页中的根,提供与业务无关的服务,如:URL重写,日志等。
BizFormBase:加入和业务相关的属性,如:该页面的当前业务对象ID等。
ViewFormBase,:EditFormBase:实现具体的查看,功能。
QueryFormBase:实现对通用查询页面的封装。
从面向对象的角度看,基类页与普通的基类,继承类设计其实区别并不大,都要在基类中编写公用的属性方法,并通过虚函数、事件等方式让继承类重写或响应。所不同的是基类页的设计过程受到所在环境的约束。在WinForm环境下,我们可以预先定义好窗体的公用元素,如工具条,默认的表格以及DataSource控件等。而到了下的WebForm,则无法实现界面一级的继承,同时加入了状态管理等要求。
为了帮助大家理解,我们以查询基类页的设计过程来分析:
一个最简单的查询页面会包括三部分,多个查询条件文本框,查询按钮,以及表格。同时查询页会和一个数据访问组件关联,当点查询时,会把查询条件转成where语句提交给数据访问组件。
QueryPeopleForm
OnQueryButtonClick()
{
string peopleName = xt;
string peopleAge = xt;
string sql;
sql = rmat(“Name Like‘%{0}%’and Age = {1}此外, PeopleName, peopleAge);
PeopleManager manager = new PeopleManager();
taSource = tDataTable(sql);
taBind();
}
当点击查询按钮时,我们做了以下三件事:
1、获取查询条件
2、提交查询
3、将查询结果绑定到表格
这儿的提交查询和绑定在不同的查询页面都是一样的,于是我们首先把2,3放到基类页中,并提供这样一个方法:void QueryAndBind(IManager manager, string sql);这儿要定义IManager接口,让所有的Manager都实现该接口,这样基类页就无需知道具体的Manager,只要调用tDataTable方法就等于增加了1点的气血上限和送给你1绑定元宝。这在其他游戏里是不曾见到过的! 966you醉西游15区梦华江山1月19日16点火爆开启!畅享西游世界,然后绑定表格到即可。
使用基类页后的代码:
QueryPeopleForm : QueryFormBase
OnQueryButtonClick()
{
string peopleName = xt;
string peopleAge = xt;
sql = rmat(“Name Like‘%{0}%’and Age = {1}, PeopleName, peopleAge);
QueryAndBind(new PeopleManager(), sql);
}
这儿的代码少了,但仍有问题,当查询条件变化后,每次拼查询语句的工作即枯燥又容易出错,那么我们加入一个Query类,以简化这儿的操作:
public enum QueryOperator
{
//等于比较。
Equal = 0,
// 不等于
NotEqual = 1,
// Like比较
Like = 6
}
class Query
{
void Add(string fieldName, string value, QueryOperator oper);
string GetSql();
}
QueryPeopleForm : QueryFormBase
OnQueryButtonClick()
{
Query query = new Query();
d(“Name”, xt, ke);
d(“Age”, xt, ual);
QueryAndBind(new PeopleManager(), tSql());
}
把拼Sql的工作放在Query类中做,调用者只要声明查询字段,对应的值,和比较类型即可。
到这一步,我们的基类页已经很好用了,但还有一个小问题,也就是前面说的,在WebForm中无法实现界面级的继承,那么基类页的QueryAndBind方法,将无法知道查询结果要绑定到哪一个表格,这时我们的做法是在基类页中声明DefaultGrid属性,让继承页来告知当前的表格控件。
修改后的代码:
QueryPeopleForm : QueryFormBase
OnQueryButtonClick()
{
InitControls(gridMain);
Query query = new Query();
d(“Name”, xt, ke);
d(“Age”, xt, ual);
QueryAndBind(new PeopleManager(), tSql());
}
至此,基类页的功能已经完整了,但仍然不够,如果我们以后想改变查询按钮点击的行为,比如查询结果为空时,要弹出对话框提示,这时仍然要到处修改页面代码,这不是我们所希望的,于是我们将QueryButton的OnClick操作也放在基类页了中执行,继承页只要初始化数据访问组件和设置查询条件即可。
QueryPeopleForm : QueryFormBase
void Initialize()
{
// 指定页面对应的Manager
Manager = new PeopleManager();
// 绑定控件
InitControls(gridMain, btnQuery);
}
void GetQueryInfo(Query query)
{
//获得查询条件
d(“Name”, xt, ke);
d(“Age”, xt, ual);
}
QueryFormBase:
private IManager manager = null;
public IManager Manager
{
get { return manager; }
set { manager = value; }
}
void InitControls(GridView grid, Button queryButton)
{
faultGrid = grid;
eryButton = queryButton;
ick += new EventHandler(QueryButton_Click);
}
void QueryButton_Click(object sender, EventArgs e)
{
Query query = new Query();
GetQueryInfo(Query);
QueryAndBind(manager, tSql());
}
总的代码可以从附件中下载,大家可以加入断点,看看基类,继承类页的代码执行顺序。
应该说基类的设计相对复杂,但好处是继承页的代码变得清楚了,没有多余重复的代码。
而基类页的设计其实是有技巧的,总结起来有以下几条:
1、首先以最直接的方式写出页面代码
2、提取公用方法和添加辅助类
3、提取事件处理流程到基类页中
4、在基类页中设计需要继承页重载的方法与事件
从设计上来讲,用基类页的方式来统一操作、简化页面代码是一种非常直观的方式,缺点是随着项目的演化,基类页会变得大而全,不容易被新的项目重用,这时我们就可以考虑把其中的一部分功能放到用户控件和自定义组件中来实现,以减少耦合性和提高重用性。查看本文来源
黄褐斑白带多粘稠怎么办经间期出血吃什么调理灰指甲亮甲效果好吗兰州治疗白癜风方法宝宝健脾助消化吃什么
-
一定要警惕苏格兰牧羊犬健康的危险信号位置
苏格兰牧羊犬和我们一样在成长的过程中都避免不了生病,即使我们很用心的去照顾呵护它们,还是免不了一些意外的发生,一些大的问题我们必须要去...[详细]
2022-06-11
-
几天的萨摩耶眼白处微红怎么回事位置
大概10天前我家可乐眼白处微红,当时没在意.后来开始有少量眼屎,仍然没在意.现在眼白比之前更红了,还是有少量眼屎.其他生活起居一切正常,不耽误吃不...[详细]
2022-06-11
-
以上的猫死于肾衰竭治疗及预防位置
>猫只拥有两个肾脏,每个肾脏皆有输尿管连接膀胱器官。两个肾脏的合共功能通常都会较其在身体所需正常工作的功能为高,因此它们的肾脏功能非常好...[详细]
2022-06-11
-
都看的边境牧羊犬修剪大全集位置
想要自家的边境牧羊犬成为别人眼中的小明星吗,成为明星的首要条件就是要有一个美丽的外表,因此定期给边境牧羊犬美容修剪毛发是很重要的事情,...[详细]
2022-06-11
-
都在看的美容术如何给马尔济斯犬梳位置
训练狗狗是非常开心的事情,如今主人们也注意提高狗狗的生活质量,大家想要科学的对待马尔济斯犬的成长问题,那么就要给狗狗养成良好的生活习惯...[详细]
2022-06-11
-
种常见虫咬问题京巴狗请注意位置
京巴狗得了肺炎、喘气困难、怎么办?月蓝蓝:京巴犬发烧是因为有炎症,建议楼主赶快去医院打吊瓶消炎,一边用物理退烧.多喝水.如果不喜欢喝可以加一...[详细]
2022-06-11