posts - 44, comments - 269, trackbacks - 22, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

三.Bridge Pattern(橋接模式)

Posted on 2007-02-28 14:36 自適應軟件...... 阅读(1161) 评论(2)  编辑 收藏 所属分类: Design Pattern


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Bridge Pattern.aspx.cs" Inherits="Pattern_Bridge_Pattern" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>Bridge Pattern</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<asp:TextBox ID="tb_result" runat="server" TextMode="MultiLine" Rows="5"></asp:TextBox>
        
<asp:Button ID="bt_submit" runat="server" OnClick="bt_submit_Click"  Text="BridgePattern" />    
        
<select id="strategy_select" runat="server">
            
<option value="A" selected="selected">A</option>
            
<option value="B">B</option>            
        
</select>
    
</div>
    
</form>
</body>
</html>


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// 優點: 將動作抽象和動作實現層分離,是兩者可以獨立的變化,体現靈活性.
/// </summary>
public partial class Pattern_Bridge_Pattern : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    {
    }

    
protected void bt_submit_Click(object sender, EventArgs e)
    {
        BridgeResult();
    }

    
public void BridgeResult()
    {
        AbstractClass abclass 
= new RefinedAbstractClass();
        
switch (strategy_select.Items[strategy_select.SelectedIndex].Value.ToString())
        {

            
case "A":
                abclass.MyFields 
= new ConcrateA();                
                
break;
            
case "B":
                abclass.MyFields 
= new ConcrateB();               
                
break;            
            
default:
                abclass.MyFields 
= new ConcrateB();
                
break;
        }
        tb_result.Text 
= abclass.Action();
    }
}

/// <summary>
/// 定義抽象動作
/// </summary>
abstract class Fields
{
    
abstract public string Action();
}

class AbstractClass
{
    
protected Fields fields;
    
public Fields MyFields
    {
        
set { fields = value; }
    }
    
virtual public string Action()
    {
        
return fields.Action();
    }
}

class RefinedAbstractClass : AbstractClass
{
    
public override string Action()
    {
        
return fields.Action();
    }
}

/// <summary>
/// 具體動作類
/// </summary>
class ConcrateA : Fields
{
    
public override string Action()
    {
        
return "A";
    }
}

class ConcrateB : Fields
{
    
public override string Action()
    {
        
return "B";
    }
}

Feedback

#1楼    回复  引用  查看    

2007-02-28 14:44 by JesseZhao      
更新很快,感觉不错了

#2楼 [楼主]   回复  引用  查看    

2007-02-28 14:53 by 自適應軟件......      
@JesseZhao
謝謝了

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-03-02 15:46 编辑过


相关链接: