如何灵活优雅实现多种分支的情况

问题描述

现封装了这么一个与银行通信接口统一提供给其他系统调用在该接口里有这么些方法:支付、充值、签约、账单查询等目前的设计是通过反射来实现的即将不同银行的具体通信类的类名、方法名、等写在配置文件如 ICBC_PAY_CLASS_NAME = ****ICBC_PAY_METHOD_NAME = **** 然后在该接口实现类中来动态调用 但是这样封装 有一点不方便的是如 支付方法工行只需5个参数 而建行却需要8个参数那么我这个接口的参数 肯定得以建行为准了或者某一个银行多出一个方法 如获取动态验证码而别的银行却不需要则我这个接口也得包含该特例方法 问题补充:maowei009 写道

解决方案

你想想看到底层除了if。。else。。还有switch能实现这种分支结构,其他也没啥关键字了,底层确实有,但是你可以添加你要的实现,而策略模式的这种扩展性才是你需要的么,同时也帮你解决了问题啊,你可以在需要的时候添加一个策略而不需要修改原来代码啊!
解决方案二:
建议去看一下策略模式,对你应该会有帮助的

时间: 2024-09-17 01:45:47

如何灵活优雅实现多种分支的情况的相关文章

多种数据库的情况

  1. DAL并不是放在一个DLL里面,而是分别放在各个的DLL里面,需要哪个数据库就使用哪个DLL文件. 2. DAL里面的命名空间.类名.参数类型都是一样的,至少主要功能都是一样的. 3. 分页控件还没有考虑好,现在只是针对MSSQL来做的,其它的数据库还没太考虑. 4. 如果情况特殊分页控件也还是可以"分别"对待的,就是若干个数据库对应一个分页控件.另外一个数据库对应另一个分页控件.  ========================= >>如果有M个业务需要有分页

ANTLR快餐教程(2) - ANTLR其实很简单

ANTLR其实很简单 ANTLR是通过递归下降的方式来解析一个语法的. 所谓的递归下降,其实很简单,不过就是一些模式匹配而己. 简单的模式匹配 我们看下官方的一个简单的例子,这是一个赋值表达式的例子. 语法这样写: assign : ID '=' expr ';' ; 解析器的代码类似于下面这样: void assign() { match(ID); match('='); expr(); match(';'); 解析只分为两种情况:第一种情况是直接模式匹配,第二种情况是调用其它函数继续分析.

灵活强大的构建系统Gradle

灵活强大的构建系统Gradle 前言 构建,软件生命周期中重要的一环,在现代软件开发过程中,起着越来越重要的作用.过去在Java或类Java的世界里,Ant.Maven再熟悉不过了,Maven凭借其强大的依赖配置战胜Ant,基本上成为了Java构建的标准.而在现代,系统日益复杂,构建的灵活性要求越来越高,比如:构建过程中需要打包上传到服务器,Maven无法很好地支持这种复杂的系统构建,所以,我选择了Gradle,一个基于Groovy,更灵活更强大的构建系统,能帮助我们构建更复杂的项目. 为什么选

你真的需要掌握多种编程语言吗?

简述 我刚刚断送了自己的职业生涯,没错,很多人都这样对我说. 同事得知我即将离开公司的消息,大多数对此表示理解.但让他们困惑的是,我目前就职的公司是一家Windows商店,用C#.net编写代码,而我要入职的岗位要求在Linux环境下进行开发,以Java为主要的编程语言.他们认为编程语言的改变会让我丢失多年经验,许多人都赞同他们的观点. 编程语言很多,数以百计.有些很常见,例如:Java.C#.PHP.Ruby.Python.和JavaScript,而有些则比较边缘化或是新兴的,例如:Awk.G

JAVA 入坑教程 | 章节七 条件分支结构

Java 分支结构 - if...else/switch 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构. Java 有两种分支结构: if 语句 switch 语句 if 语句 一个 if 语句包含一个布尔表达式和一条或多条语句. 语法 if 语句的用语法如下:  if(布尔表达式){ //如果布尔表达式为true将执行的语句 } 如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码. public class Test { public

《C语言程序设计》一3.3 多分支选择结构

3.3 多分支选择结构 多分支选择结构有多种形式,嵌套的if语句和switch语句可以实现多分支结构,嵌套的if语句又包括else-if语句和嵌套的if-else语句. 3.3.1 else-if语句 else-if语句是最常用的多分支选择结构,其语法格式如下: if(表达式1) 语句1; else if (表达式2) 语句2; - else if (表达式n) 语句n; else 语句n+1; 执行过程是首先判断表达式1,如果为真,则执行语句1,跳过其余的判断语句,结束整个else-if语句,

Git 分支概述

1.1 Git 分支 - 分支简介 几乎所有的版本控制系统都以某种形式支持分支. 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线. 在很多版本控制系统中,这是一个略微低效的过程--常常需要完全创建一个源代码目录的副本.对于大项目来说,这样的过程会耗费很多时间. 有人把 Git 的分支模型称为它的"必杀技特性",也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出. 为何 Git 的分支模型如此出众呢? Git 处理分支的方式可谓是难以置信的轻量,创建新分支

如何对 GIT 分支进行规划? (转)

项目背景: 该项目是在2011年11月份使用Asp.net三层帮荷兰某个客户开发的机票预定系统 该客户主要是做中国与欧洲的旅行社业务,特别是最近两年由于中国的发展因此客户也越来越重视机票业务 于是他们跟去哪儿沟通并进行了合作,并我司来完成与去哪儿机票业务的对接业务 因为该客户项目从一开始就由我来负责,因此该对接业务也就自然而然的落到我的身上    问题描述: 因为对接功能需要与现在的项目进行整合,因此我只是在机票预定系统的解决方案里添加了一个新项目(Qunar),并且使用Git来分别进行版本控制

javascript每日必学之条件分支_javascript技巧

大家好,我们今天接着前面的讲,前面已经大概了讲了一下运算符,今天的任务主要就是讲解逻辑条件分支,循环. 我们先就来模拟一个逻辑块,就用我们经常接触到的买车票来说吧,车票的价格对不同的人价格是有差别的,但是我们都是一样的去执行买票这个行为,我们就可以把买票写成一个函数BuyTicket //代码 function BuyTicket(){ console.log("请付款200元"); } 大家看到了这个函数体,其实是有缺陷的,我们每个人去买票的时候,都是执行这一个函数,如果是军人,或者