《设计模式 ● 适配器》之业务场景

来源:互联网 发布:在线模拟post请求源码 编辑:程序博客网 时间:2024/06/06 00:24

/**************************************************************************************************
** 设计思想需要归纳与提炼,无论简单抑或复杂。当然方案未必是唯一的最佳路径,在总结
** 的过程中发现问题、改善问题;只有跳出业务,将复杂问题简单化,才能提纲挈领,寻找
** 共性与变化的制高点!
************************************************************************************************/

 

      适配器:将一个类的接口转换成客户希望的另一个接口,使得原来由于接口不兼容而不能一起工作的那些类可以一起工作,其实更通俗的讲就是将鸡适配成鸭,将鸡蛋适配成鸭蛋,将屁股适配成脸(这个有点过-_-|||)。

§ 场景1

       逆向适配:远程服务暴露诸多接口,每个接口都有一系列同类的外部方法,这些方法的调用,需要同类型不同namespace的模型类,示例如下:

      

       适配视图:

      

       适配代码:

      

    /// <summary>    /// 基类头    /// </summary>    public abstract class BaseHeader<T>    {        public abstract T GetRequestHeader();        /// <summary>        /// 请求Header        /// </summary>        protected RequestHeader RequestHeader        {            get            {                RequestHeader header = new RequestHeader();                header.Version = "10";                header.RequestNo = System.Guid.NewGuid().ToString();                header.RequestTime = DateTime.Now;                header.SourceId = ToolUtils.AppType;                return header;            }        }    }    /// <summary>    /// IFunctionService    /// </summary>    public class FunctionHeader : BaseHeader<requestHeader>    {        public override requestHeader GetRequestHeader()        {            requestHeader header = new requestHeader();            header.version = RequestHeader.Version;            header.requestNo = RequestHeader.RequestNo;            header.requestTime = RequestHeader.RequestTime;            header.sourceId = RequestHeader.SourceId;            return header;        }    }    /// <summary>    /// Summary description for InterfaceFactory    /// </summary>    internal class InterfaceFactory    {        #region Init        static readonly InterfaceFactory _Instance = new InterfaceFactory();        /// <summary>        /// Instance        /// </summary>        public static InterfaceFactory Instance        {            get            {                return _Instance;            }        }        #endregion        /// <summary>        /// 获取RequestHeader        /// </summary>        /// <param name="type"></param>        /// <returns></returns>        public object RequestHeader(AuthConsts.InterfaceType type)        {            switch (type)            {                case AuthConsts.InterfaceType.IFunctionService:                    return new FunctionHeader().GetRequestHeader();                case AuthConsts.InterfaceType.IOperatorRoleService:                    return new OperatorRoleHeader().GetRequestHeader();                case AuthConsts.InterfaceType.IOperatorWS:                    return new OperatorWSHeader().GetRequestHeader();            }            throw new MemberAuthException(ErrorConsts.SysError);        }    }   调用:            using (var service = GetService())            {                getAllGrantedAuthorityRequest request = new getAllGrantedAuthorityRequest();                request.header = InterfaceFactory.Instance.RequestHeader(AuthConsts.InterfaceType.IFunctionService) as requestHeader;                //......            }

§ 场景2

  用户类型适配:

  树形结构适配:

  付款适配:


 

原创粉丝点击