zoukankan      html  css  js  c++  java
  • 架构师_设计模式_结构型_适配器

    适配器模式:两个不同的对象 让他们实现适配,

      使用条件:第三方类是无法更改的才需要新增一层适配 可以更改就无须使用适配

      有两种实现方法1: 以继承类方式适配,但是强耦合 子类继承了父类全部方法 可能是不需要的  2:组合方式进行适配

          如果姚明会英语那么久没必要适配器,所以第三方内部可以更改就没必要适配器模式

    适用于,我们自己已经定义好的类, 突然要对接第三方类(无法更改),

    using System;
    
    namespace 适配器模式
    {
        //适配器实现方式有两种
        //第一种:以继承类方式适配,但是强耦合 子类继承了父类全部方法 可能是不需要的
        //第二种:对象适配, 组合方式进行适配
        class Program
        {
            static void Main(string[] args)
            {
                IHelp sqlhelp = new SqlHelp();
                sqlhelp.ADD<string>();
    
                IHelp oraclehelp = new OracleHelp();
                oraclehelp.Delete<string>();
    
                //第一种: 以继承类方式适配
                IHelp redisHelp = new redisHelpAdapter();
                oraclehelp.Delete<string>();
                //第二种:对象组合,实现适配
                IHelp redisHelpCombination = new redisHelpCombination(new RdeisHelp());
                oraclehelp.Delete<string>();
    
                Console.WriteLine("Hello World!");
            }
        }
    
        public interface IHelp
        {
            public void ADD<T>();
            public void Delete<T>();
            public void Insert<T>();
            public void Update<T>();
        }
    
        public class SqlHelp : IHelp
        {
            public void ADD<T>()
            {
                throw new NotImplementedException();
            }
    
            public void Delete<T>()
            {
                throw new NotImplementedException();
            }
    
            public void Insert<T>()
            {
                throw new NotImplementedException();
            }
    
            public void Update<T>()
            {
                throw new NotImplementedException();
            }
        }
    
        public class OracleHelp : IHelp
        {
            public void ADD<T>()
            {
                throw new NotImplementedException();
            }
    
            public void Delete<T>()
            {
                throw new NotImplementedException();
            }
    
            public void Insert<T>()
            {
                throw new NotImplementedException();
            }
    
            public void Update<T>()
            {
                throw new NotImplementedException();
            }
        }
    
        //第三方help 但是里面的方法我们没有办法更改,
        //实现第一种方式,类继承适配
        public class RdeisHelp
        {
            public void redisAdd<T>() { }
        }
        //创造适配器
        public class redisHelpAdapter : RdeisHelp, IHelp
        {
            public void ADD<T>()
            {
                base.redisAdd<T>();
            }
    
            public void Delete<T>()
            {
                throw new NotImplementedException();
            }
    
            public void Insert<T>()
            {
                throw new NotImplementedException();
            }
    
            public void Update<T>()
            {
                throw new NotImplementedException();
            }
        }
    
        #region  第二种方法组合
    
        public class redisHelpCombination : IHelp
        {
            private RdeisHelp _rdeisHelp = null;
    
            public redisHelpCombination(RdeisHelp rdeisHelp)
            {
                this._rdeisHelp = rdeisHelp;
            }
    
            public void ADD<T>()
            {
                throw new NotImplementedException();
            }
    
            public void Delete<T>()
            {
                throw new NotImplementedException();
            }
    
            public void Insert<T>()
            {
                throw new NotImplementedException();
            }
    
            public void Update<T>()
            {
                throw new NotImplementedException();
            }
        }
        #endregion
    }
  • 相关阅读:
    jedis操作redis事务练习
    jedis连接redis,测试操作redis常用的数据类型 String List Set Hash Zset
    多态的理解
    binarySeach方法
    数组重新认识
    String的 认识
    接口的 认识
    抽象类及抽象方法
    protected的深刻理解
    protected的认识
  • 原文地址:https://www.cnblogs.com/LZXX/p/12882560.html
Copyright © 2011-2022 走看看