⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 class1.cs

📁 《深入浅出设计模式》的完整源代码
💻 CS
字号:

namespace BusinessObjectApp
{
	using System;
	using System.Collections;
	// 商业对象类
	class BusinessObject
	{
		private DataObject dataObject;
		protected string group;
		// 构筑函数
		public BusinessObject( string group )
		{
			this.group = group;
		}
		//数据对象属性
		public DataObject DataObject
		{
			set{ dataObject = value; }
			get{ return dataObject; }
		}
		//调用了数据对象的引用来处理
		virtual public void Next()
		{			
			dataObject.NextRecord();
		}
		virtual public void Prior()
		{
			dataObject.PriorRecord();
		}
		virtual public void New( string name )
		{
			dataObject.NewRecord( name );
		}
		virtual public void Delete( string name )
		{
			dataObject.DeleteRecord( name );
		}
		//单个显示
		virtual public void Show()
		{
			dataObject.ShowRecord();
		}
		//全部显示
		virtual public void ShowAll()
		{
			Console.WriteLine( "客户集合: {0}", group );
			dataObject.ShowAllRecords();
		}
	}
	// 商业对象派生类-客户商业对象
	class CustomersBusinessObject : BusinessObject
	{
		// 构筑函数,调用原接口的构筑函数
		public CustomersBusinessObject( string group )
			: base( group ){}
		override public void ShowAll()
		{
			//在原显示所有数据基础上增加上下分行线
			Console.WriteLine();
			Console.WriteLine( "------------------------" );
			base.ShowAll();
			Console.WriteLine( "------------------------" );
		}
	}
	//抽象数据对象实现类
	abstract class DataObject
	{
		abstract public void NextRecord();
		abstract public void PriorRecord();
		abstract public void NewRecord( string name );
		abstract public void DeleteRecord( string name );
		abstract public void ShowRecord();
		abstract public void ShowAllRecords();
	}
	//具体实现类--客户数据对象
	class CustomersDataObject : DataObject
	{
		private ArrayList customers = new ArrayList();
		private int current = 0;
		public CustomersDataObject()
		{
			//可以从数据库取得
			customers.Add( "张三" );
			customers.Add( "李四" );
			customers.Add( "王五" );
			customers.Add( "张六" );
			customers.Add( "赵七" );
		}
		public override void NextRecord()
		{
			if( current <= customers.Count - 1 )
				current++;
		}
		public override void PriorRecord()
		{
			if( current > 0 )
				current--;
		}
		public override void NewRecord( string name )
		{
			customers.Add( name );
		}
		public override void DeleteRecord( string name )
		{
			customers.Remove( name );
		}
		public override void ShowRecord()
		{
			Console.WriteLine( customers[ current ] );
		}
		public override void ShowAllRecords()
		{
			foreach( string name in customers )
				Console.WriteLine( " " + name );
		}
	}
	/// <summary>
	/// 客户测试程序
	/// </summary>
	public class BusinessApp
	{
		public static void Main( string[] args )
		{
			// 创建扩充抽象类-客户商业对象 
			CustomersBusinessObject customers =
				new CustomersBusinessObject("广州顾客名单");
			// 设定它的具体实现类-客户数据对象
			customers.DataObject = new CustomersDataObject();
			//单个显示出来
			customers.Show();
			customers.Next();
			customers.Show();
			customers.Next();
			customers.Show();
			customers.New( "陈八" );
			//显示所有其数据
			customers.ShowAll();
			Console.Read();
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -