惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 司徒正美
V
V2EX
Cloudbric
Cloudbric
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
量子位
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
K
Kaspersky official blog
博客园 - 【当耐特】
T
Tenable Blog
L
Lohrmann on Cybersecurity
The Cloudflare Blog
S
Schneier on Security
A
Arctic Wolf
Latest news
Latest news
C
Cyber Attacks, Cyber Crime and Cyber Security
罗磊的独立博客
T
The Exploit Database - CXSecurity.com
Cisco Talos Blog
Cisco Talos Blog
小众软件
小众软件
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
Simon Willison's Weblog
Simon Willison's Weblog
雷峰网
雷峰网
NISL@THU
NISL@THU
人人都是产品经理
人人都是产品经理
月光博客
月光博客
J
Java Code Geeks
V
Visual Studio Blog
S
Security Affairs
博客园 - Franky
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
H
Heimdal Security Blog
有赞技术团队
有赞技术团队
V2EX - 技术
V2EX - 技术
AWS News Blog
AWS News Blog
G
GRAHAM CLULEY
T
Troy Hunt's Blog
SecWiki News
SecWiki News
Spread Privacy
Spread Privacy
宝玉的分享
宝玉的分享
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 聂微东

博客园 - 冷风.net

以OO的思想利用JS來實現五子棋 開放幾個原來寫的js代碼,供大家娛樂一下 使用JS寫的第一個游戲[俄羅斯方塊] 假如現在讓你去說服客戶使用asp.net2.0開發系統,你會怎麼說服呢? 對象化javascript日期控件 - 冷风.net - 博客园 工作排程 防止圖片在WEB頁面上下載 - 冷风.net - 博客园 今天從新整理的大小寫數據轉換 - 冷风.net - 博客园 常用的XPATH說明 XmlHttp在DoNet中的完全应用---前/后台完成分离篇 系统用户权限与角色分析 学习设计模式之Composite 模式 改進Richer的WEB頁面進度條! 学习设计模式之生成器(Builder Pattern)模式 再谈Abstract Factory模式来实现数据库操作的类 Factory Method来实现数据库操作的类 不周表結構合併問題 今天下午困惑的問題,終於TMD搞出來了 利用線程實現錠時執行的運行模型
学习设计模式之Bridge模式
冷风.net · 2005-03-07 · via 博客园 - 冷风.net

今天看了设计模式中的Bridge模式,所以列出自己对其的认识:

Bridge模式:指的是将一事件的抽象与行为分开来,也就是说使对象的属性与方法之间藕合度降低.

使用Bridge模式的好处:当给对象增加新的属性时只需要继承这个对象的抽象属性接口就行了,当给对象增加新的方法时只需要继承这个对象的抽象方法接口噈OK了。这样就使用一个对象的属性与方法完成分开来了。

现以本人在机子上玩游戏为例来说明Bridge模式:
1.对象属性方面:
先创建一个抽象类来说明在什么系统下玩游戏
再创建具体的属性类如Windows98系统与windows2000系统
2.对象方法方面:
先创建一个抽象来来说明玩游戏
再创建具体的类来说明正在玩什么游戏

using System;

namespace DesignPatterns.BirdgePattern
{
    
/// <summary>
    
/// 定義計算機類型的抽象類(接口)
    
/// </summary>

    abstract public class ComputerSystem
    
{
        
abstract public string PlayGame();
    }

    
/// <summary>
    
/// 定義Windows98系統
    
/// </summary>

    public class Windows98 : ComputerSystem
    
{
        
public override string PlayGame()
        
{
            
return "Window98";
        }

    }

    
/// <summary>
    
/// 定義Windows2000系統
    
/// </summary>

    public class Windows2000 : ComputerSystem
    
{
        
public override string PlayGame()
        
{
            
return "Windows2000";
        }

    }

    
/// <summary>
    
/// 定義游戲的抽象類(接口)
    
/// </summary>

    abstract public class Game
    
{
        
protected ComputerSystem computerSystem;
        
public ComputerSystem SetComputerSystem
        
{
            
set{computerSystem=value;}
        }

        
public abstract string Play();
    }

    
/// <summary>
    
/// 定義星際類
    
/// </summary>

    public class StartCarft : Game
    
{
        
public override string Play()
        
{
            
string systemName = computerSystem.PlayGame();
            
return "正在" + systemName + "系統下玩星際爭霸";
        }

    }

    
/// <summary>
    
/// 定義敵國類
    
/// </summary>

    public class AgeOfEmpire : Game
    
{
        
public override string Play()
        
{
            
string systemName = computerSystem.PlayGame();
            
return "正在" + systemName + "系統下玩帝國時代";
        }

    }

}

接著來看看該如何調用了:

Game objGame = new AgeOfEmpire();// new StartCarft(); //創建所玩游戲的對象
            objGame.SetComputerSystem = new Windows2000();//new Windows98(); //指定是在哪個系統下玩游戲
            label1.Text = objGame.Play();

接著來看看該如何調用了: