哈尔滨网站建设信息,贵州建设厅网站厅长,建立网站目录结构时应该注意哪几个方面,软件开发app制作公司返回首页 
前言 
感谢各位同学的关注与支持#xff0c;我会一直更新此专题#xff0c;竭尽所能整理出更为详细的内容分享给大家#xff0c;但碍于时间及精力有限#xff0c;代码分享较少#xff0c;后续会把所有代码示例整理到github#xff0c;敬请期待。 
此章节介绍策…返回首页 
前言 
感谢各位同学的关注与支持我会一直更新此专题竭尽所能整理出更为详细的内容分享给大家但碍于时间及精力有限代码分享较少后续会把所有代码示例整理到github敬请期待。 
此章节介绍策略模式。 1、策略模式 
在策略模式中一个类的行为或其算法可以在运行时更改。 
在策略模式中我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对象。策略对象改变context对象的执行算法。 
定义一系列的算法把它们一个个封装起来并且使它们可相互替换。 
1.1、UML图 1.2、示例代码 
// 版本一未使用面向对象思想
//if (string.IsNullOrEmpty(tbPrice.Text) || string.IsNullOrEmpty(tbCount.Text))
//{
//    MessageBox.Show(单价或数量不能为空);
//    return;
//}
//double total  Convert.ToDouble(tbPrice.Text) * Convert.ToDouble(tbCount.Text);
//_total  total;
//rtbList.AppendText(单价  tbPrice.Text   数量  tbCount.Text   合计  total  \n);
//lbTotal.Text  _total.ToString();// 版本二增加打折重复代码过多、未使用面向对象思想
//if (string.IsNullOrEmpty(tbPrice.Text) || string.IsNullOrEmpty(tbCount.Text))
//{
//    MessageBox.Show(单价或数量不能为空);
//    return;
//}
//double total  0;
//switch (cbxType.SelectedIndex)
//{
//    case 0:
//        total  Convert.ToDouble(tbPrice.Text) * Convert.ToDouble(tbCount.Text);
//        break;
//    case 1:
//        total  Convert.ToDouble(tbPrice.Text) * Convert.ToDouble(tbCount.Text) * 0.8;
//        break;
//    case 2:
//        total  Convert.ToDouble(tbPrice.Text) * Convert.ToDouble(tbCount.Text) * 0.7;
//        break;
//    case 3:
//        total  Convert.ToDouble(tbPrice.Text) * Convert.ToDouble(tbCount.Text) * 0.5;
//        break;
//}
//_total  total;
//rtbList.AppendText(单价  tbPrice.Text   数量  tbCount.Text     cbxType.SelectedItem   合计  total  \n);
//lbTotal.Text  _total.ToString();// 版本三简单工厂模式
//if (string.IsNullOrEmpty(tbPrice.Text) || string.IsNullOrEmpty(tbCount.Text))
//{
//    MessageBox.Show(单价或数量不能为空);
//    return;
//}
//Factory.CashSuper cash  Factory.CashFactory.CreateFactory(cbxType.SelectedItem.ToString());
//double total  cash.acceptCash(Convert.ToDouble(tbPrice.Text) * Convert.ToDouble(tbCount.Text));
//_total  total;
//rtbList.AppendText(单价  tbPrice.Text   数量  tbCount.Text     cbxType.SelectedItem   合计  total  \n);
//lbTotal.Text  _total.ToString();版本三策略模式
//if (string.IsNullOrEmpty(tbPrice.Text) || string.IsNullOrEmpty(tbCount.Text))
//{
//    MessageBox.Show(单价或数量不能为空);
//    return;
//}
//Strategy.CashContext cashContext  null;
//switch (cbxType.SelectedItem)
//{
//    case 正常收费:
//        cashContext  new Strategy.CashContext(new Strategy.CashNormal());
//        break;
//    case 打八折:
//        cashContext  new Strategy.CashContext(new Strategy.CashRebate(0.8));
//        break;
//    case 满300返100:
//        cashContext  new Strategy.CashContext(new Strategy.CashReturn(300, 100));
//        break;
//    default:
//        break;
//}
//double total  cashContext.GetResult(Convert.ToDouble(tbPrice.Text) * Convert.ToDouble(tbCount.Text));
//_total  total;
//rtbList.AppendText(单价  tbPrice.Text   数量  tbCount.Text     cbxType.SelectedItem   合计  total  \n);
//lbTotal.Text  _total.ToString();// 版本四策略模式、简单工厂模式
if (string.IsNullOrEmpty(tbPrice.Text) || string.IsNullOrEmpty(tbCount.Text))
{MessageBox.Show(单价或数量不能为空);return;
}
Strategy.CashContextFactory ccf  new Strategy.CashContextFactory(cbxType.SelectedItem.ToString());
double total  ccf.GetResult(Convert.ToDouble(tbPrice.Text) * Convert.ToDouble(tbCount.Text));
_total  total;
rtbList.AppendText(单价  tbPrice.Text   数量  tbCount.Text     cbxType.SelectedItem   合计  total  \n);
lbTotal.Text  _total.ToString();