面向接口编程(Adapter)

这几天不知道为什么 ,突然想琢磨接口技术,接触了接口才知道它的强大.

下面的这小段代码  这里引入一个设计模式,“Adapter”。它的作用就如现实中的适配器一样,把接口不一致的两个插件接合起来。其实很简单.

 

 

using System;
using System.Collections.Generic;
using System.Text;

namespace InterfaceExample //接口果然强大!!.
{
    public interface IMobileStorage
    {
        void read();
        void write();

    }
    public class FlashDisk : IMobileStorage
    {
        public void read()
        {
            Console.WriteLine("这是U盘--读取--数据正常");
        }
        public void write()
        {
            Console.WriteLine("这是U盘--写入--数据正常");
        }
    }
    public class MP3Player : IMobileStorage
    {
        public void read()
        {
            Console.WriteLine("这是MP3--读取--数据正常");
        }
        public void write()
        {
            Console.WriteLine("这是MP3--写入--数据正常");

        }
        public void playerMusic()
        {
            Console.WriteLine("我除了读写数据,还可以播放音乐噢!");
        }
    }
    public class MobileHardDisk : IMobileStorage
    {
        public void read()
        {
            Console.WriteLine("这是硬盘--读取--数据正常");
        }
        public void write()
        {
            Console.WriteLine("这是硬盘--写入--数据正常");
        }
    }
    public class NewMobileStorage : IMobileStorage
    {
        public void read()
        {
            Console.WriteLine("新设备读入正常");
        }
        public void write()
        {
            Console.WriteLine("新设备写入正常");
        }
    }
    public class SuperStorageAdapter:IMobileStorage
    {
        private SuperStorage superStorage;

        public SuperStorage SuperStorage
        {
            get { return superStorage; }
            set { superStorage = value; }
        }
        public void read()
        {
            this.SuperStorage.rd();
        }
        public void write()
        {
            this.SuperStorage.wt();
        }
    }
    public class SuperStorage : SuperStorageAdapter
    {
        public void rd()
        {
            Console.WriteLine("New新设备读入正常");
        }
        public void wt()
        {
            Console.WriteLine("New新设备写入正常");
        }  
    }
    public class Computer
    {
        private IMobileStorage _USBdrive;

        public IMobileStorage USBdrive
        {
            get { return _USBdrive; }
            set { _USBdrive = value; }
        }
        public Computer()
        {

        }
        public Computer(IMobileStorage USBdrive)
        {
            this.USBdrive = USBdrive;
        }
        public void readData()
        {
            this.USBdrive.read();
        }
        public void writeData()
        {
            this.USBdrive.write();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Computer computer = new Computer();
            IMobileStorage mp3Player = new MP3Player();
            IMobileStorage flashDisk = new FlashDisk();
            IMobileStorage mobileHaedDisk = new MobileHardDisk();
            IMobileStorage newMobileStorage = new NewMobileStorage();

            SuperStorageAdapter superStorageAdapter = new SuperStorageAdapter();
            SuperStorage superStorage = new SuperStorage();
            superStorageAdapter.SuperStorage = superStorage;
            computer.USBdrive = superStorageAdapter;
            computer.readData();
            computer.writeData();

            computer.USBdrive = mp3Player;
            computer.writeData();
            computer.readData();
            MP3Player mp3 = new MP3Player();
            mp3.playerMusic();
           

            computer.USBdrive = mobileHaedDisk;
            computer.readData();
            computer.writeData();

            computer.USBdrive = flashDisk;
            computer.writeData();
            computer.readData();

            computer.USBdrive = newMobileStorage;
            computer.writeData();
            computer.readData();
        }
    }
}

 

posted @ 2009-02-19 11:07  linaspx  阅读(314)  评论(0)    收藏  举报