zoukankan      html  css  js  c++  java
  • 7.适配器模式(Adapter Pattern)

    using System;
    
    namespace Test
    {
        /// <summary>
        /// 适配器模式主要解决的问题就是我们要调用的接口类型,无法满足我们新系统的使用需求,
        /// 这时候,我们需要将旧系统的接口,通过适配器进行转配,达到支持新接口调用的目的。
        /// 对于这样的要求,我们通过适配器就可以完成,当然如果有多个接口需要转配,
        /// 那么我们就需要为每一个接口提供一个适配器去完成转换的工作。 
        /// </summary>
        class Program
        {
            static void Main(string[] args)
            {
                ISelect adapter = new QueryAdapter();
                object o = adapter.GetList();
                ISelect adapterEx = new QueryAdapterEx();
                object oEx = adapter.GetList();
            }
        }
    
    
        /// <summary>
        /// 旧系统查询接口
        /// </summary>
        public interface IQuery
        {
            object QueryList();
        }
    
        /// <summary>
        /// 旧系统的查询服务
        /// </summary>
        public class Query : IQuery
        {
            public object QueryList()
            {
                return new object();
            }
        }
    
        /// <summary>
        /// 新系统查询接口
        /// </summary>
        public interface ISelect
        {
            object GetList();
        }
    
        /// <summary>
        /// 通过类适配器完成转配操作
        /// 类适配器:通过继承的方式来实现,将旧系统的方法进行封装。
        /// 对象适配器在进行适配器之间的转换过程中,无疑类适配器也能完成,
        /// 但是依赖性会加大,并且随着适配要求的灵活性,可能通过继承膨胀的难以控制。
        /// </summary>
        public class QueryAdapter : Query, ISelect 
        { 
            public object GetList() 
            {
                return base.QueryList(); 
            } 
        }
    
        /// <summary>
        /// 通过类适配器完成转配操作
        /// 对象适配器:不是通过继承的方式,
        /// 而是通过对象组合的方式来进行处理的,
        /// 我们只要学过OO的设计原则的都知道,组合相比继承是推荐的方式。
        /// </summary>
        public class QueryAdapterEx : ISelect
        {
            private Query query = new Query();
    
            public object GetList()
            {
                return query.QueryList();
            }
        }
    
    
    }
  • 相关阅读:
    golang ---cron
    Maven私库安装与配置
    Java8新特性之重复注解(repeating annotations)浅析
    String split
    如何将xml转为python中的字典
    json字符串和dict互转
    为什么空格拷贝到linux 会变成两个
    python之socket编程
    ntpdate设置
    Nginx配置ssl证书
  • 原文地址:https://www.cnblogs.com/lgxlsm/p/4634676.html
Copyright © 2011-2022 走看看