最简单的mvc框架tiny,orm、原理图、问题与解决思路

orm

先说下orm,在前面我们没有提这个,其实我们已经实现了orm功能。

这里把orm做了极大的简化,以一个model映射到数据库的一张表。在前面看到我们把业务处理也放在model里,所以这时model才是真正的充血模型,并把对数据库的操作封装为dao,所以orm其实为model+dao。

Tiny v1.0框架原理图

再补一下框架的原理图

Tiny v2.0 设计中。。。(先贴个图)


Tiny框架的问题及解决思路

问题1:参数类型Map<String,String>问题

我们规定所有参数都为Map<String,String>,中值都为String类型确实有点不好让人接受(虽然从页面传递过来的,都是String类型),现在我们想参数转型的工作由tiny来完成,我们怎么解决这个问题呢?

解决思路:

重写一个TinyMap类继承HashMap。我们实现getInt,getString等方法,调用这些方法可以对类型自动转换,当使用get方法时,其实是调用HashMap的get方法,放回object类型,代码如下:

1 TinyMap tMap = new TinyMap(参);
2 tMap.getInt(key);
3 tMap.getString(key);
4 tMap.get(key);//Ojbect

然后由前置控制器中将页面的参数转换为TinyMap类型(现在转换为HashMap),最后放入action参数中。由于action中参数为map接口,所有对原设计无影响,用户可同时使用HashMap和TinyMap的方法。

问题2Aop功能太过鸡轴,只能对action访问的织入,而不能对业务(model)织入

解决办法

方式1:动态代理模式

实现动态代理类。在前置控制器中代码Container.inject(o);(注入模型)时,注入代理类,然后在BindingAop中绑定model(类似action),代理类调用具体的model方法,在执行前后调用aop的before和after。具体如下:

BindingUtil.binding("/模型类/模型方法/", new Class[]{TestAop.class});//模型和aop的绑定
通过绑定,我们把模型类,自动放入代理类中,然后在action中定义代理类,同以前那样注入,然后action中调用代理类.invok();即可。

方式2:装饰模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值