码迷,mamicode.com
首页 > Windows程序 > 详细

c#真正的适配器模式

时间:2017-10-30 22:19:06      阅读:344      评论:0      收藏:0      [点我收藏+]

标签:bsp   调用   tap   模型   sock   nes   代码   效果   generic   

这个栗子是真正意思上的适配器模型;堪称完美

直接上代码;

当前接口,无法满足需求(无法通过新增实现来完成拓展,又想调用新的接口,来满足需求;

来满足新旧接口不一致,(当前,接口,新旧不一致的情况)或者叫不一致的方法;达到代码重用的目的;

 

 

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

namespace ConsoleApplication26
{
    public interface IJapanSocket
    {
        void Charge(int a,int b);
    }
    //它不能附加我丰富的想想和情感,所以,不能创造一种东西;
    //了解自己的特性 然后寻找一种媒介 借助这个媒介而让自己产生,产出更大的价值或各种产物;


    public class JapanSocket:IJapanSocket
    {
        public void Charge(int a,int b)
        {
            Console.WriteLine("在日本进行各种充电滴呀;输出电压...{0}",a+b);
        }
    }

    public interface IChineseSocket
    {
        void Charge(int a ,int b, int c);
    }

    public class ChineseSocket : IChineseSocket
    {
        public void Charge(int a ,int b,int c)
        {
            Console.WriteLine("利用日本插口+适配,打到我们的充电220v电气的目的.........当前输出电压{0}",a+b+c);
        }
    }


    //适配器模式,要实现旧的接口,然后实现性的新接口滴呀;
    //在不修改原有方法的
    //那就基于我们事件编程,效果很好滴呀;
    public class Adapter : IJapanSocket
    {
        //新的接口;
        public IChineseSocket ChineseSocket { get; internal set; }

        private Adapter() { } //不允许没事初始化数据,就去使用我们的类滴呀;

        public int AdataperQutity { get; private set; }

        public Adapter(IChineseSocket chineseSocket, int adataperQutity)
        {
            ChineseSocket = chineseSocket;
            AdataperQutity = adataperQutity; //适配类提供的量
        }

        //旧的接口,实现性的接口;
        public void Charge(int a,int b)
        {
            ChineseSocket.Charge(a,b,AdataperQutity);
        }
    }

    public class Hotel
    {

        public void DoSomething()
        {
            ////这样就是我们的 常规接口模式;
            //IJapanSocket socket = new JapanSocket();
            //socket.Charge();

            //这样才到我我们正在适配的目的

            ChineseSocket chinese = new ChineseSocket();

            Adapter adapter = new Adapter(chinese,110); 

            IJapanSocket japan = adapter;

            japan.Charge(55,55);

            //掉的日本的接口,去是中国的实现;

            //这样就型号才能了我们的适配器模式;

            //我们掉的japan的 方法,去是一种新额实现滴呀;

            //这样的做法很酸爽滴呀;

        }


    }

    class Program
    {
        static void Main(string[] args)
        {

            Hotel h = new Hotel();
            h.DoSomething();

            Console.ReadLine();
        }
    }
}

 

c#真正的适配器模式

标签:bsp   调用   tap   模型   sock   nes   代码   效果   generic   

原文地址:http://www.cnblogs.com/mc67/p/7757837.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!