当前位置: 首页 > news >正文

郑州网站建设易云巢做公司网站的公司

郑州网站建设易云巢,做公司网站的公司,手机网站发展,网络布线设计方案在软件开发中#xff0c;有时也会遇到类似的情况#xff0c;某个方法的实现需要多个步骤#xff08;类似“请客”#xff09;#xff0c;其 中有些步骤是固定的#xff08;类似“点单”和“买单”#xff09;#xff0c;而有些步骤并不固定#xff0c;存在可变性… 在软件开发中有时也会遇到类似的情况某个方法的实现需要多个步骤类似“请客”其 中有些步骤是固定的类似“点单”和“买单”而有些步骤并不固定存在可变性类似“吃 东西”。为了提高代码的复用性和系统的灵活性可以使用一种称之为模板方法模式的设计 模式来对这类情况进行设计在模板方法模式中将实现功能的每一个步骤所对应的方法称 为基本方法例如“点单”、“吃东西”和“买单”而调用这些基本方法同时定义基本方法的执 行次序的方法称为模板方法例如“请客”。在模板方法模式中可以将相同的代码放在父类 中例如将模板方法“请客”以及基本方法“点单”和“买单”的实现放在父类中而对于基本方 法“吃东西”在父类中只做一个声明将其具体实现放在不同的子类中在一个子类中提 供“吃面条”的实现而另一个子类提供“吃满汉全席”的实现。通过使用模板方法模式一方面 提高了代码的复用性另一方面还可以利用面向对象的多态性在运行时选择一种具体子 类实现完整的“请客”方法提高系统的灵活性和可扩展性。 模板方法模式定义如下 模板方法模式定义一个操作中算法的框架而将一些步骤延迟到子类中。模板方法模 式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 Template Method Pattern: Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithms structure. 模板方法模式是一种基于继承的代码复用技术它是一种类行为型模式。 模板方法模式是结构最简单的行为型设计模式在其结构中只存在父类与子类之间的继承关 系。通过使用模板方法模式可以将一些复杂流程的实现步骤封装在一系列基本方法中在 抽象父类中提供一个称之为模板方法的方法来定义这些基本方法的执行次序而通过其子类 来覆盖某些步骤从而使得相同的算法框架可以有不同的执行结果。模板方法模式提供了一 个模板方法来定义算法框架而某些具体步骤的实现可以在其子类中完成。 数据查询表多个情况下存在很多冗余代码。getCapk函数的代码。getAid函数的代码query函数的代码都有点重复但是又不完全相同。但是冗余代码太多了又什么好的设计模式能处理好这个情况 public ListEMV_CAPK getCapk(int acquirerIdx) {SQLiteDatabase db emvDbHelper.getReadableDatabase();ListEMV_CAPK capkList new ArrayList();String[] columns {EmvDbHelper.rid,EmvDbHelper.capkIndex,EmvDbHelper.keyExp,EmvDbHelper.keyMod,EmvDbHelper.checksum};String selection EmvDbHelper.acquirerId ?;String[] selectionArgs {String.valueOf(acquirerIdx)};Cursor cursor db.query(EmvDbHelper.TABLE_CAPK,columns,selection,selectionArgs,null,null,null);while (cursor.moveToNext()) {EMV_CAPK emvCapk createEMVCapkFromCursor(cursor);capkList.add(emvCapk);}cursor.close();db.close();return capkList;} public String query(int acquirerIdx) {String version null;SQLiteDatabase db emvDbHelper.getReadableDatabase();// 定义要查询的列String[] columns {EmvDbHelper.tableVersion};// 设置查询条件String selection EmvDbHelper.acquirerId ?;String[] selectionArgs {String.valueOf(acquirerIdx)};Cursor cursor db.query(EmvDbHelper.TABLE_ACQUIRER,columns,selection,selectionArgs,null,null,null);if (cursor.moveToFirst()) {// 尝试获取 tableVersion 列的索引int tableVersionIndex cursor.getColumnIndex(EmvDbHelper.tableVersion);// 检查索引是否有效if (tableVersionIndex 0) {// 列存在可以安全地访问version cursor.getString(tableVersionIndex);}}cursor.close();db.close();return version;} 改良后的代码。 public abstract class DatabaseQueryTemplate {protected EmvDbHelper emvDbHelper;protected String tableName;public DatabaseQueryTemplate(EmvDbHelper emvDbHelper) {this.emvDbHelper emvDbHelper;}public DatabaseQueryTemplate(EmvDbHelper emvDbHelper, String tableName) {this.emvDbHelper emvDbHelper;this.tableName tableName;}public MapString, Object executeQuery(String[] columnsToSelect, String selectionColumn, String selectionValue) {SQLiteDatabase db emvDbHelper.getReadableDatabase();Cursor cursor db.query(tableName,columnsToSelect,selectionColumn ?,new String[]{selectionValue},null,null,null);MapString, Object result new HashMap();if (cursor.moveToFirst()) {result DatabaseUtil.getColumnValues(cursor, columnsToSelect);}cursor.close();db.close();return result;}protected abstract void processRow(Cursor cursor); } public class AidQuery extends DatabaseQueryTemplate {private ListTables.AidTable result;public AidQuery(EmvDbHelper emvDbHelper) {super(emvDbHelper, EmvDbHelper.TABLE_AID);result new ArrayList();}public ListTables.AidTable getResult() {return result;}Overrideprotected void processRow(Cursor cursor) {} }public String getAcqIndexList(String aid){AidQuery aidQuery new AidQuery(emvDbHelper);String[] columnsToSelect {EmvDbHelper.acquirerId,EmvDbHelper.aidIndex};String selectionColumn EmvDbHelper.aid;String selectionValue aid;MapString, Object result aidQuery.executeQuery(columnsToSelect, selectionColumn, selectionValue);// 在这里可以根据需要处理 result例如将其转换为字符串返回// 以下代码是示例具体处理逻辑根据实际需求修改StringBuilder resultString new StringBuilder();for (String columnName : columnsToSelect) {Object columnValue result.get(columnName);if (columnValue ! null) {resultString.append(columnValue);}}return resultString.toString();} String acqIndexList dbManager.getAcqIndexList(aid);Logs.d(TAG,acqIndexList acqIndexList);
http://www.pierceye.com/news/649199/

相关文章:

  • 苏州哪个公司做门户网站seo优化方案报价
  • 电力建设官方网站做网站送优化
  • 门户网站建设模式包括网站群和中企动力企业邮箱登陆首页
  • 做调查网站的问卷哪个给的钱高wordpress邮箱注册功能
  • 上海php网站开发基于php网站建设
  • 大丰专业做网站做旅游网站当地人服务赚钱吗
  • 长沙网站制作公司推荐seo关键词排名优化
  • 内蒙古住房与城乡建设部网站广州十大软件公司排名
  • 营销型网站 易网拓德阳做网站
  • 网站建设seo虾哥网络购物网站技术实施方案
  • 门户网站框架下载陕西省建设工会网站
  • 网站有信心做的更好做外贸到什么网站上发布比较好
  • wex5做网站wordpress页面的设置
  • 绍兴市建设银行网站网站建设的基本术语
  • 建筑企业网站模板免费下载seo 网站换程序
  • wordpress怎么做排名seo怎么样
  • 电商网站开发平台哪家好百度运营怎么做
  • 门户网站 源码网站建设推广公司范围
  • 网站字体大小wordpress用户登录页面
  • 影院禁止18岁以下观众入内宿迁新站seo
  • 龙岗网站设计机构网站开发开始阶段的主要任务包括( )。
  • 宿州公司网站建设教做世界美食的网站
  • 网站建设价格很 好乐云seo免费自学编程
  • 网站哪家做的好公共资源交易中心级别
  • html5网站开发工具自己做微信电影网站怎么做
  • 学院网站制度建设成品大香伊煮蕉免费在线
  • 做网站的域名和空间是什么意思佛山建站专
  • 网站是哪个公司做wordpress 底部修改插件
  • 嘉兴网站推广优化印度vps
  • 网站seo诊断分析和优化方案青岛网站制作方案