app banner设计

本文介绍了某拍卖系统App的Banner设计思路,包括数据库表结构设计,如valid字段用于控制有效性,starttime和endtime记录活动时间,user字段记录创建者和修改者。此外,讨论了移动端的设计模式,建议通过解析action进行图片地址获取,并利用Java反射机制提高代码的可扩展性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请注明来自:http://blog.youkuaiyun.com/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{

	@Override
	public String getPhoto() {
		System.out.println("get img url!");
		return "Img url";
	}

	@Override
	public void action() {
		System.out.println("forward img!");
	}

}
package com.test.deal;

public class DealProduct implements BaseDeal{

	@Override
	public String getPhoto() {
		System.out.println("get product url!");
		return "Product url";
	}

	@Override
	public void action() {
		System.out.println("forward product!");
	}

}

package com.test.deal;

public class DealUrl implements BaseDeal{

	@Override
	public String getPhoto() {
		System.out.println("get browser url!");
		return "Browser url";
	}

	@Override
	public 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 display
			baseDeal.action();
		}else{
			System.err.println("class cast error!");
		}
	}

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值