程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 設計模式之橋接模式,設計模式橋接

設計模式之橋接模式,設計模式橋接

編輯:關於.NET

設計模式之橋接模式,設計模式橋接


1、類圖

實例類圖

2、創建項目

……………………

3、 新建Matrix:像素矩陣類,輔助類,各種格式的圖像文件最終都會被轉化為像素矩陣,不同的操作系統提供不同的方式現實像素矩陣。

namespace BridgeSample

{

    class Matrix

    {

        //代碼省略

    }

} 

4、 新建ImageImp:抽象操作系統實現類,充當實現類接口

namespace BridgeSample

{

    interface ImageImp

    {

        void DoPaint(Matrix m);  //顯示像素矩陣

    }

}

5、 新建WindowsImp:Windows操作系統實現類,充當具體實現類 

using System;

namespace BridgeSample

{

    class WindowsImp : ImageImp

    {

        public void DoPaint(Matrix m)

        {

         //調用Windows系統的繪制函數繪制像素矩陣

         Console.Write("在Windows操作系統中顯示圖像:");

        }

    }

6、 新建LinuxImp:Linux操作系統實現類,充當具體實現類

//LinuxImp.cs

using System;

namespace BridgeSample

{

    class LinuxImp : ImageImp

    {

        public void DoPaint(Matrix m)

        {

            //調用Linux系統的繪制函數繪制像素矩陣

            Console.Write("在Linux操作系統中顯示圖像:");

        }

    }

}

7、 新建UnixImp:UNIX操作系統實現類,充當具體實現類 

using System; 

namespace BridgeSample

{

    class UnixImp : ImageImp

    {

        public void DoPaint(Matrix m)

        {

            //調用Unix系統的繪制函數繪制像素矩陣

            Console.Write("在Unix操作系統中顯示圖像:");

        }

    }

}

8、 Image:抽象圖像類,充當抽象類

namespace BridgeSample

{

    abstract class Image

    {

        protected ImageImp imp;

        //注入實現類接口對象

        public void SetImageImp(ImageImp imp)

        {

            this.imp = imp;

        }

        /// <summary>

        /// 文件轉換到像素矩陣

        /// </summary>

        /// <param name="fileName"></param>

        public abstract void ParseFile(string fileName);

    }

9、 JPGImage:JPG格式圖像類,充當擴充抽象類 

using System;

namespace BridgeSample

{

    class JPGImage : Image

    {

        public override void ParseFile(string fileName)

        {

            //模擬解析JPG文件並獲得一個像素矩陣對象m;

            Matrix m = new Matrix();

            imp.DoPaint(m); //調用操作系統的像素轉換方法

 

            Console.WriteLine("{0},格式為JPG。",fileName);

        }

    }

}

10、 新建PNGImage:PNG格式圖像類,充當擴充抽象類

using System;

namespace BridgeSample

{

    class PNGImage : Image

    {

        public override void ParseFile(string fileName)

        {

            //模擬解析PNG文件並獲得一個像素矩陣對象m;

            Matrix m = new Matrix();

            imp.DoPaint(m);//調用操作系統的像素轉換方法

 

            Console.WriteLine("{0},格式為PNG。", fileName);

        }

    }

11、 新建BMPImage:BMP格式圖像類,充當擴充抽象類

using System;

namespace BridgeSample

{

    class BMPImage : Image

    {

        public override void ParseFile(string fileName)

        {

            //模擬解析PNG文件並獲得一個像素矩陣對象m;

            Matrix m = new Matrix();

            imp.DoPaint(m);//調用操作系統的像素轉換方法

 

            Console.WriteLine("{0},格式為BMP。", fileName);

        }

    }

}

12、 新建GIFImage:GIF格式圖像類,充當擴充抽象類 

using System; 

namespace BridgeSample

{

    class GIFImage : Image

    {

        public override void ParseFile(string fileName)

        {

            //模擬解析PNG文件並獲得一個像素矩陣對象m;

            Matrix m = new Matrix();

            imp.DoPaint(m);//調用操作系統的像素轉換方法

            

            Console.WriteLine("{0},格式為GIF。", fileName);

        }

    }

13、 新建 配置文件App.config

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <appSettings>

    <!--RefinedAbstraction-->

    <add key="image" value="BridgeSample.PNGImage"/>

    <!--ConcreteImplementor-->

    <add key="os" value="BridgeSample.WindowsImp"/>

  </appSettings>

</configuration>

14、 編輯Program:客戶端測試類

using System;

using System.Configuration;

using System.Reflection;

namespace BridgeSample

{

    class Program

    {

        static void Main(string[] args)

        {

            Image image;

            ImageImp imp;

            //讀取配置文件

            string imageType = ConfigurationManager.AppSettings["image"];

            string osType = ConfigurationManager.AppSettings["os"];          

            //反射生成對象

            image = (Image)Assembly.Load("BridgeSample").CreateInstance(imageType);

            imp = (ImageImp)Assembly.Load("BridgeSample").CreateInstance(osType);            

            image.SetImageImp(imp);

            image.ParseFile("中國地圖");

            Console.Read();

        }

    }

15、 運行模式代碼:

 

16、如果需要更換圖像文件格式或者更換操作系統,只需修改配置文件即可。

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <appSettings>

    <!--RefinedAbstraction-->

    <add key="image" value="BridgeSample.BMPImage"/>

    <!--ConcreteImplementor-->

    <add key="os" value="BridgeSample.LinuxImp"/>

  </appSettings>

</configuration> 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved