using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace DesignFactory.Bridge
{
/// <summary>
/// 桥梁模式
/// </summary>
class BridgePattern
{
}
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 ShowAllRecord();
}
class BusinessObject
{
protected string group;
public BusinessObject(string group)
{
this.group = group;
}
private DataObject dataObject;
public DataObject DataObject
{
get { return dataObject; }
set { dataObject = value; }
}
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("Customer Group:{0}", group);
dataObject.ShowAllRecord();
}
}
class CustomersBusinessObject : BusinessObject
{
public CustomersBusinessObject(string group)
: base(group)
{ }
public override void ShowAll()
{
Console.WriteLine();
Console.WriteLine("-----------------");
base.ShowAll();
Console.WriteLine("------------------");
}
}
class CustomersDataObject : DataObject
{
private ArrayList customers = new ArrayList();
private int current = 0;
public CustomersDataObject()
{
customers.Add("Jim Jones");
customers.Add("Samual Jackson");
customers.Add("Allen Good");
customers.Add("Ann Stills");
customers.Add("Lisa Giolani");
}
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 ShowAllRecord()
{
foreach (string name in customers)
{
Console.WriteLine(" " + name);
}
}
}
public class BusinessApp
{
public static void Main(string[] args)
{
CustomersBusinessObject customers = new CustomersBusinessObject("Chicago");
customers.DataObject = new CustomersDataObject();
customers.Show();
customers.Next();
customers.Show();
customers.Next();
customers.Show();
customers.New("Henry Velasquez");
customers.ShowAll();
}
}
}
【设计模式】之 Bridge 桥梁模式
最新推荐文章于 2024-03-14 10:07:43 发布