app banner设计

来源:互联网 发布:sqlserver 进阶 编辑:程序博客网 时间:2024/06/08 08:06

转载请注明来自:http://blog.csdn.net/huntersjm/article/details/41013981

本文为某拍卖系统app的banner设计

1:由于保持运维修改的便利性,banner设计为数据库存储,具体表结构如下:


设计解释:a.设计中valid为该banner是否为有效,便于随时调整banner的有效性

  b.设计中的starttime和endtime为开始时间,和结束时间,比如某活动在11.11凌晨开始有效,肯定不会在11.11凌晨去点击valid使得有效,所以采用

<优化:其实可以设置为自定义的时间格式内容,比如每周周末之类的等的方式,来保证更大的广度和可选性>

  c.设计中user,为记录创建人和修改人,便于权限的控制和记录

  d.设计中的控制基本为固定的省市区域性别,因为控制的方案是很固定的。<如果有其他需要,可以放置到control里面,来控制进行,与b一样可扩展性就很强了>

  e.image为时间显示的图片,因为banner肯定是表观的显示为图片<可扩展,可以根据定义的action来控制扩展,比如不同情况来>

  f.action为控制,控制点击banner的跳转,比如img$url...为跳转到图片 prd$productid为跳转到产品页面 url$url...为跳转到浏览器usr$userid 为跳转到用户页面等,控  制自定义化,模板化(采用$控制为减少浏览器编码冲突)

2:建议移动端设计模式,将传入的action解析,获取传入的图片地址,来获取图片(如果action为特殊,比如product可以通过product来获取)

  设计标准: 通过设计对应每个类型的处理,通过统一接口来定义方法,通过java反射机制来获取对应的处理类,大大地提高了可扩展性和维护性,代码可读性等

简单的代码示例:<移动端根据此思想进行改动>

package com.test.deal;public interface BaseDeal {public String getPhoto();public void action();}

package com.test.deal;public class DealImg implements BaseDeal{@Overridepublic String getPhoto() {System.out.println("get img url!");return "Img url";}@Overridepublic void action() {System.out.println("forward img!");}}
package com.test.deal;public class DealProduct implements BaseDeal{@Overridepublic String getPhoto() {System.out.println("get product url!");return "Product url";}@Overridepublic void action() {System.out.println("forward product!");}}

package com.test.deal;public class DealUrl implements BaseDeal{@Overridepublic String getPhoto() {System.out.println("get browser url!");return "Browser url";}@Overridepublic void action() {System.out.println("forward browser!");}}

package com.test.deal;public class Operation {public void banner(String banner){String []banners = banner.split("$");if(banners.length!=2){System.err.println("error input!");return;}BaseDeal baseDeal = null;try {baseDeal = (BaseDeal) Class.forName("com.test.deal.Deal"+banners[0]).newInstance();} catch (InstantiationException e) {System.err.println("This class can't be instantiated!");e.printStackTrace();} catch (IllegalAccessException e) {System.err.println("This class can't be access!");e.printStackTrace();} catch (ClassNotFoundException e) {System.err.println("This class not exists!");e.printStackTrace();}if(baseDeal!=null){String bannerUrl = baseDeal.getPhoto();//download bannerUrl operation to displaybaseDeal.action();}else{System.err.println("class cast error!");}}}

3:总结:该方法的可扩展性,维护性,代码可读性大大增加,便于后期代码的继续开发。

0 0
原创粉丝点击