您的位置:首页 > 其它

【设计模式】之 Bridge 桥梁模式

2012-03-05 09:36 309 查看
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();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: