Net设计模式实例之桥接模式 Bridge PatternWord文档下载推荐.docx

上传人:b****6 文档编号:16182964 上传时间:2022-11-21 格式:DOCX 页数:12 大小:167.92KB
下载 相关 举报
Net设计模式实例之桥接模式 Bridge PatternWord文档下载推荐.docx_第1页
第1页 / 共12页
Net设计模式实例之桥接模式 Bridge PatternWord文档下载推荐.docx_第2页
第2页 / 共12页
Net设计模式实例之桥接模式 Bridge PatternWord文档下载推荐.docx_第3页
第3页 / 共12页
Net设计模式实例之桥接模式 Bridge PatternWord文档下载推荐.docx_第4页
第4页 / 共12页
Net设计模式实例之桥接模式 Bridge PatternWord文档下载推荐.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Net设计模式实例之桥接模式 Bridge PatternWord文档下载推荐.docx

《Net设计模式实例之桥接模式 Bridge PatternWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Net设计模式实例之桥接模式 Bridge PatternWord文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。

Net设计模式实例之桥接模式 Bridge PatternWord文档下载推荐.docx

尽量使用聚合或者组合,尽量不使用类继承。

对象的继承关系是在编译时就定义好的,所以无法在运行时改变从父类继承的实现。

子类的实现与它的父类有着非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。

当需要复用子类时,如果集成下来的实现不符合解决新的问题,则父类必然重写或被其他更合适的类替换。

这种依赖关系限制了灵活性并最终限制了复用性。

二、解决的问题(WhatToSolve)

当系统有多维角度分类时,而每一种分类又有可能变化,这时考虑使用桥接模式比较合适。

三、桥接模式分析(Analysis)

1、桥接模式结构

Abstraction类:

业务抽象类,定义一个抽象接口,维护对Impementor的引用.

RefinedAbstraction类:

具体实现类,被提炼的抽象

Implementor类:

定义一个抽象实现类,此抽象类与Abstraction类不一定完全相同。

Implementor类提供了一些原始的操作,而Abstraction类是对这些原始操作一个更高层次的封装.

ConcreteImplementorA,ConcreteImplementorA类:

具体实现

2、代码

1、业务抽象类Abstraction及其提炼出的具体实现类RefinedAbstraction

publicabstractclassAbstraction

{

protectedImplementor_implementor;

publicImplementorImplementor

{

set{_implementor=value;

}

get{return_implementor;

publicvirtualvoidOperation()

_implementor.OperationImp();

}

publicclassRefinedAbstraction:

Abstraction

publicoverridevoidOperation()

2、抽象实现类Implementor及其具体实现类ConcreteImplementorA

和ConcreteImplementorB

publicabstractclassImplementor

publicabstractvoidOperationImp();

publicclassConcreteImplementorA:

Implementor

publicoverridevoidOperationImp()

Console.WriteLine("

{0}OperationMethod"

this.GetType().Name);

publicclassConcreteImplementorB:

this.GetType().Name);

2、客户端代码

staticvoidMain(string[]args)

Abstractiona1=newRefinedAbstraction();

//Setimplementationandcall

a1.Implementor=newConcreteImplementorA();

a1.Operation();

//Changeimplementionandcall

a1.Implementor=newConcreteImplementorB();

Console.ReadKey();

3、实例运行结果

四.桥接模式实例分析(Example)

1、场景

业务对象(BusinessObject)与数据对象(DataObject)分离,即业务对象CustormerBase与数据对象DataObject分离。

业务对象CustormerBase完成更高层次的业务操作。

结构如下图所示

CustomersBasel类:

定义一个抽象接口,维护对DataObject的引用。

Custorers类:

被提炼的抽象。

DataObject类:

数据抽象类主要操作有添加纪录。

删除纪录、定位Next纪录、定位Prior纪录,展示所有纪录,展示当前纪录等。

CustomersData类:

数据抽象类的具体实现。

1、抽象接口CustomersBase及其具体实现类Customers

classCustomersBase

privateDataObject_dataObject;

protectedstringgroup;

publicCustomersBase(stringgroup)

this.group=group;

//Property

publicDataObjectData

set{_dataObject=value;

get{return_dataObject;

publicvirtualvoidNext()

_dataObject.NextRecord();

publicvirtualvoidPrior()

_dataObject.PriorRecord();

publicvirtualvoidAdd(stringcustomer)

_dataObject.AddRecord(customer);

publicvirtualvoidDelete(stringcustomer)

_dataObject.DeleteRecord(customer);

publicvirtualvoidShow()

_dataObject.ShowRecord();

publicvirtualvoidShowAll()

CustomerGroup:

"

+group);

_dataObject.ShowAllRecords();

///<

summary>

///The'

RefinedAbstraction'

class

/summary>

classCustomers:

CustomersBase

//Constructor

publicCustomers(stringgroup)

:

base(group)

publicoverridevoidShowAll()

//Addseparatorlines

Console.WriteLine();

**************************"

);

base.ShowAll();

2、抽象数据对象类DataObject及其具体实现类CustomersData

abstractclassDataObject

publicabstractvoidNextRecord();

publicabstractvoidPriorRecord();

publicabstractvoidAddRecord(stringname);

publicabstractvoidDeleteRecord(stringname);

publicabstractvoidShowRecord();

publicabstractvoidShowAllRecords();

ConcreteImplementor'

classCustomersData:

DataObject

privateList<

string>

_customers=newList<

();

privateint_current=0;

publicCustomersData()

//Loadedfromadatabase

_customers.Add("

JamesHao"

灵动生活"

郝**"

*宪*"

**玮"

publicoverridevoidNextRecord()

if(_current<

=_customers.Count-1)

_current++;

publicoverridevoidPriorRecord()

if(_current>

0)

_current--;

publicoverridevoidAddRecord(stringcustomer)

_customers.Add(customer);

publicoverridevoidDeleteRecord(stringcustomer)

_customers.Remove(customer);

publicoverridevoidShowRecord()

Console.WriteLine(_customers[_current]);

publicoverridevoidShowAllRecords()

foreach(stringcustomerin_customers)

+customer);

3、客户端代码

//CreateRefinedAbstraction

CustomersBasecustomers=newCustomers("

ShandongProvince"

//SetConcreteImplementor

customers.Data=newCustomersData();

//Exercisethebridge

customers.Show();

customers.Next();

customers.Add("

Haoxianwei"

customers.ShowAll();

五、总结(Summary)

本文对桥接模式(BridgePattern)的概念、设计结构图、代码、使用场景、聚合与合成原则以及什么是聚合/合成进行了描述。

以一个桥接模式实例进行了说明。

桥接模式是比较常用和简单的设计模式。

当系统有多维角度分类时,而每一种分类又有可能变化,可以考虑使用桥接模式。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1