Net设计模式实例之桥接模式( Bridge Pattern)(3)

本文介绍了一种基于抽象工厂模式的客户数据管理系统的设计方案。通过定义抽象接口CustomersBase及其实现类Customers,配合抽象数据对象类DataObject及其实现类CustomersData,实现了客户数据的增删查改等功能。

2、代码

1抽象接口CustomersBase及其具体实现类Customers
class CustomersBase
{
    private DataObject _dataObject;
    protected string group;
    public CustomersBase(string group)
    {
        this.group = group;
    }
    // Property
    public DataObject Data
    {
        set { _dataObject = value; }
        get { return _dataObject; }
    }
    public virtual void Next()
    {
        _dataObject.NextRecord();
    }
    public virtual void Prior()
    {
        _dataObject.PriorRecord();
    }
 
    public virtual void Add(string customer)
    {
        _dataObject.AddRecord(customer);
    }
 
    public virtual void Delete(string customer)
    {
        _dataObject.DeleteRecord(customer);
    }
 
    public virtual void Show()
    {
        _dataObject.ShowRecord();
    }
 
    public virtual void ShowAll()
    {
        Console.WriteLine("Customer Group: " + group);
        _dataObject.ShowAllRecords();
    }
}
 
/// <summary>
/// The 'RefinedAbstraction' class
/// </summary>
class Customers : CustomersBase
{
    // Constructor
    public Customers(string group)
 
        base(group)
    {
    }
    public override void ShowAll()
    {
        // Add separator lines
        Console.WriteLine();
        Console.WriteLine("**************************");
        base.ShowAll();
        Console.WriteLine("**************************");
    }
}
 
2抽象数据对象类DataObject及其具体实现类CustomersData
abstract class DataObject
{
    public abstract void NextRecord();
 
    public abstract void PriorRecord();
 
    public abstract void AddRecord(string name);
 
    public abstract void DeleteRecord(string name);
 
    public abstract void ShowRecord();
 
    public abstract void ShowAllRecords();
 
}
/// <summary>
/// The 'ConcreteImplementor' class
/// </summary>
class CustomersData : DataObject
{
    private List<string> _customers = new List<string>();
    private int _current = 0;
 
    public CustomersData()
    {
        // Loaded from a database
        _customers.Add("James Hao");
        _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 AddRecord(string customer)
    {
        _customers.Add(customer);
    }
    public override void DeleteRecord(string customer)
    {
        _customers.Remove(customer);
    }
    public override void ShowRecord()
    {
        Console.WriteLine(_customers[_current]);
    }
    public override void ShowAllRecords()
    {
        foreach (string customer in _customers)
        {
            Console.WriteLine(" " + customer);
        }
    }
}









本文转自 灵动生活 51CTO博客,原文链接:http://blog.51cto.com/smartlife/265773,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值