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

推荐订阅源

V
V2EX
J
Java Code Geeks
MongoDB | Blog
MongoDB | Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
Engineering at Meta
Engineering at Meta
美团技术团队
N
Netflix TechBlog - Medium
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
F
Fortinet All Blogs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
MyScale Blog
MyScale Blog
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
The Cloudflare Blog
量子位
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - 冷风.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();

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