C# 桥模式代码

// Bridge pattern -- Real World example
using System;
using System.Collections;
// "Abstraction"
class BusinessObject
{
 // Fields
 private DataObject dataObject;
 protected string group;
 // Constructors
 public BusinessObject( string group )
 {
  this.group = group;
 }
 // Properties
 public DataObject DataObject
 {
  set{ dataObject = value; }
  get{ return dataObject; }
 }
 // Methods
 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.ShowAllRecords();
 }
}
// "RefinedAbstraction"
class CustomersBusinessObject : BusinessObject
{
 // Constructors
 public CustomersBusinessObject( string group )
  : base( group ){}
 // Methods
 override public void ShowAll()
 {
  // Add separator lines
  Console.WriteLine();
  Console.WriteLine( "------------------------" );
  base.ShowAll();
  Console.WriteLine( "------------------------" );
 }
}
// "Implementor"
abstract class DataObject
{
 // Methods
 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();
}
// "ConcreteImplementor"
class CustomersDataObject : DataObject
{
 // Fields
 private ArrayList customers = new ArrayList();
 private int current = 0;
 // Constructors
 public CustomersDataObject()
 {
  // Loaded from a database
  customers.Add( "Jim Jones" );
  customers.Add( "Samual Jackson" );
  customers.Add( "Allen Good" );
  customers.Add( "Ann Stills" );
  customers.Add( "Lisa Giolani" );
 }
 // Methods
 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 );
 }
}
/**////

/// Client test
///

public class BusinessApp
{
 public static void Main( string[] args )
 {
  // Create RefinedAbstraction
  CustomersBusinessObject customers =
   new CustomersBusinessObject(" Chicago ");
  // Set ConcreteImplementor
  customers.DataObject = new CustomersDataObject();
  // Exercise the bridge
  customers.Show();
  customers.Next();
  customers.Show();
  customers.Next();
  customers.Show();
  customers.New( "Henry Velasquez" );
  customers.ShowAll();
 }
}

没有看懂学习中

C# 桥模式代码

时间: 2024-10-09 11:20:39

C# 桥模式代码的相关文章

c++ 设计模式7 (Bridge 桥模式)

4.2 Bridge 桥模式 动机: 由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个变化的维度. 代码示例: 实现一个Messager,含有基本功能PlaySound,Connect等,并有PC.Mobile不同的平台实现 和 精简.完美等不同业务功能的版本 实现方法1: Bridge1.cpp 类的个数:1 + n + m*n,数量巨大且不同类之中有大量重复 重构见方法2 1 class Messager{ 2 public: 3 virtual void Login(st

js---25桥模式

桥接模式是一种既能把两个对象连接在一起,又能避免二者间的强耦合的方法.通过"桥"把彼此联系起来,同时又允许他们各自独立变化. 主要作用表现为将抽象与其实现隔离开来,以便二者独立化. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta ht

Bridge Design Pattern (桥模式)

桥模式的核心思想在于:抽象和行为分离. 在JDON里面,板桥里人举的例子是咖啡(抽象)与加奶(行为)的关系.原文(http://www.jdon.com/designpatterns/bridge.htm) 意思比较清晰,比如说,按照排列组合关系,大杯咖啡,小杯咖啡,和是否加奶,能够组成四种组合:大杯加奶,小杯加奶,大杯不加奶,小杯不加奶,如果再加一种行为进去,比如加巧克力,或者加方糖什么的,势必会出现更多的组合.如果为每一种组合创造一种对象,会造成对象过多代码混乱的状况. 还有很多例子阐述类似

Java桥模式(Bridge模式)

Bridge定义:将抽象和行为划分开来,各自独立,但能动态的结合. 为什么使用桥模式 通常,当一个抽象类或接口有多个具体实现(concrete subclass),这些concrete之间关系可能有以下两种: 这多个具体实现之间恰好是并列的,如前面举例,打桩,有两个concrete class:方形桩和圆形桩:这两个形状上的桩是并列的,没有概念上的重复,那么我们只要使用继承就可以了. 实际应用上,常常有可能在这多个concrete class之间有概念上重叠.那么需要我们把抽象共同部分和行为共同

桥模式

桥模式:将某个问题抽象的不同形式分别与该问题的具体实现部分相分离,使他们都可以独立变化,并能够动态结合. 例如电视厂商海尔,长虹生产21寸,29寸电视机.从这里要将它们分离出来,就用到桥模式.电视机与电视机生产厂商挂桥,从而,分离出不同厂商的实现,与不同电视机型号的实现. 从上图可以看出,将实际抽象分离出来. 看下代码 创建电视机 1 public abstract class Television { 2 //电视厂商 3 protected TelevisionMaker televisio

Java设计模式——桥模式

概述 桥模式(Bridge)是为了解决将抽象部分与实现部分分离,好让他们都在自己的维度上有多维度地变化.这句话是好理解的,只是我在学习完桥模式之后,存在一些疑问,还好现在想通了.现在我就桥模式的设计思想和我的疑问一并发出,希望于你有益. 版权说明 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 本文作者:Coding-Naga 发表日期: 2016年3月31日 本文链接:http://blog.csdn.net/lemon_tree12138/article/detail

设计模式(十二)桥模式(Bridge)-结构型

桥模式Bridge引文 根据面向对象的设计原则,应该尽量使用组合而不是继承.桥模式将抽象与其实现解耦,使他们可以分别独立地变化,是继承的一种代替方式. 对于两个类之间需要进行关联时,不要直接在一个类的代码中调用另一个类的代码,而是要通过这些设计模式,在两个类之间建立一个类似的缓冲器的类,从而将直接关联的两个类进行解耦,以保证以后当一个类的接口发生变化时不会影响另一个类的使用. 实现原理图 桥模式实现原理图 桥模式试讲抽象和实现分离实现解耦,使他们可以分别独立地变化.桥模式也是继承关系的一个替代方

Spring基于事件驱动模型的订阅发布模式代码实例详解

代码下载地址:http://www.zuidaima.com/share/1791499571923968.htm 原文:Spring基于事件驱动模型的订阅发布模式代码实例详解 事件驱动模型简介 事件驱动模型也就是我们常说的观察者,或者发布-订阅模型:理解它的几个关键点: 首先是一种对象间的一对多的关系:最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方): 当目标发送改变(发布),观察者(订阅者)就可以接收到改变: 观察者如何处理(如行人如何走,是快走/慢走/不走,目标不会管的

JS-构造函数模式代码实战和总结-极客

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 </head> 7 <body> 8 <script> 9 //构造函数模式代码实战和总结 10 11 //1 , 用户床垫特定类型的对象 12 //2,JS构造函