框架设计基本概念-第一篇
2016-11-07 22:08
363 查看
给大家介绍一个订单的设计,考虑到商品普通价和VIP打折后的不同订单金额
运行结果:
UML图:
运行结果:
UML图:
Program.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication50 { class Program { static void Main(string[] args) { IOperationPrice operationPrice = new OperationNormalPrice(); Order order = new Order(operationPrice) { Status = OrderStatus.Active, Items = new Items() }; Console.WriteLine("普通价:" + order.GetPrice()); operationPrice = new OperationVipPrice(); order = new Order(operationPrice) { Status = OrderStatus.Active, Items = new Items() }; Console.WriteLine("*VIP价:" + order.GetPrice()); Console.ReadKey(); } } }
Item.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication50 { public class Item { public string ItemName { get; set; } public string ItemCode { get; set; } public int Price { get; set; } } }
Items.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication50 { public class Items : List<Item>, IEnumerable<Item> { public Items() { this.Add(new Item { ItemName = ".net高级编程", ItemCode = "001", Price = 100 }); this.Add(new Item { ItemName = "程序员修炼", ItemCode = "002", Price = 200 }); } } }
IOperationPrice.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication50 { public interface IOperationPrice { double GetPrice(Order order); } }
OperationNormalPrice.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication50 { public class OperationNormalPrice : IOperationPrice { public double GetPrice(Order order) { double result = 0; foreach (var item in order.Items) { result += item.Price; } return result; } } }
OperationVipPrice.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication50 { public class OperationVipPrice : IOperationPrice { public double GetPrice(Order order) { double result = 0; foreach (var item in order.Items) { result += item.Price-20; } return result; } } }
Order.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication50 { public class Order { public OrderStatus Status; public Items Items; private IOperationPrice OperationPrice; public Order(IOperationPrice operationPrice) { this.OperationPrice = operationPrice; } public double GetPrice() { return OperationPrice.GetPrice(this); } } public enum OrderStatus { Active = 1, DeActive = 2 } }
相关文章推荐
- C#读书笔记(框架设计第二版:CLR VIA C#)—— 一些生成、打包、部署和管理应用程序的核心概念
- 面向对象分析和设计基本概念
- 1.设计模式的基本概念和原则
- 认识应用框架之基本概念
- 高性能MMORPG服务端引擎设计之基本概念
- Struts 框架的基本概念及实现MVC模式的原理
- 网页交互设计基本概念
- SOA设计模式--基本概念及原则
- 高速数字设计基本概念
- CPLD/FPGA/Verilog_高速电路设计/信号完整性的一些基本概念
- 高速电路设计/信号完整性的一些基本概念(转载)
- RichFaces框架的基本概念架(1)
- SOA 的基本概念及设计原则浅议
- 高性能MMORPG通用服务端引擎设计之->基本概念篇
- 测试用例设计白皮书--测试用例基本概念
- 面向对象分析和设计基本概念
- 测试用例设计白皮书--测试用例基本概念
- 设计模式的学习(一):基本概念
- 框架学习之Hibernate 第一节 安装配置和基本概念