Atitit.biz业务系统 面向框架 面向模式---------数据映射imp
1.1. 面向变量 面向过程 面向对象 面向组件 面向框架 面向服务 面向模式1
2.1.2. order_service_dataMaper4bet5
2.2. Everyting is file ----------linux5
1.1. 面向变量 面向过程 面向对象 面向组件 面向框架 面向服务 面向模式
面向变量 asm语言,,变量是global的
模式 包括 架构模式 and 设计模式
1.2. 第2章 架构模式 18
2.1 导言 18
2.2 从混乱到有序 19
2.2.1 Layers模式 21
2.2.2 PipesandFilters模式 34
2.2.3 Blackboard模式 46
2.3 分布式系统 62
2.4 交互式系统 78
2.4.1 Model—View—Controller模式 79
2.4.2 Presentation—Abstraction—Control模式 93
2.5 可适应系统 109
2.5.1 Microkernel模式 110
2.5.2 Reflection模式 124
作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
1.3. 第3章 设计模式 143
3.1 导言 143
3.2 结构分解模式 144
3.3 工作组织模式 157
3.4 访问控制 169
3.5 管理模式 178
3.5.1 CommandProcessor模式 179
3.5.2 ViewHandler模式 188
3.6 通信模式 198
3.6.1 Forwarder—Receiver模式 199
3.6.2 Client—Dispatcher—Server模式 209
3.6.3 Publisher—Subscriber模式 219
1.4. 面向对象中的面向变量全局变量问题
1.其实程序的传递就是变量的传递,变量是任何编程中不可缺少的因素。随着很多模式和编程方式的出现,应用设计可能层次比较清楚,更宜人理解。然而变量将变得很多,同样作用的变量在不同的层中可能不一样,而且随着不同开发人员在同一时间开发不同的层或者不同时间开发同一模块都可能根据自己的想法声明或者定义某个变量,而他们所定义的这个变量其实都是一样的, 理论上应该是一个变量,或者说至少命名应该一样。如果能归为同样命名的变量,那就能很大程度上减少维护和开发的工作。所以能否将同样功能的变量进行统一命名就很有必要。
2.了解变量其实就是了解业务,虽然很早就强调文档,强调业务知识的学习,然而我觉得看程序其实是了解业务的最好方法,但条件是程序比较清楚, 这里包括应用的构架清晰,具有相应的备注以及变量的含义清晰。
变量一个很重要的属性是她的scope, 根据scope我们可以将用到的变量进行分类,帮助我们理解。下面我就web应用将变量scope进行分类(其实同样适用于其他应用):
我们把变量分为两大类, 一类是 面向变量所关心的,他具有跨越型传递性,他这里的跨越型传递性表示该变量的所附属的值会传递到下个地方,这个地方可以是下个页面, 可以是服务器 可以是数据库中我们称该类变量为前锋型变量
。另一类是 面向对象所不关心的, 他不具有跨越型传递性, 他只是作为临时中介,比如某个页面的中的临时变量,java 方法中的临时变量. 他们不是我们所关心的,我们称这里变量为候补型变量
。对于面向对象的编程我们的原则是:
前锋型变量命名要很清晰,要能够联动,能串成串,不要冗余;候补型变量命名要简洁,最好不要游离在方法外,在方法中产生,在方法中消亡。
而对于前锋型变量 我认为因为他承载着有效数据,他的理解往往反映了业务,并且它是全局性的,具有跨越型的传递,所以他的重要性会更大一点,那么针对他能有很多tool 可以做。
Tool 1:前锋变量联动机功能描述:在页面上定义一个前锋型变量,那么可以自动在数据库中添加该字段 在DAO层 Business层添加该变量,同时可以实现修改某个页面变量 同时数据库以及各个层都能改变该变量。
或者 在数据库层添加某个字段 对应能产生页面,DAOBusiness的前锋型变量.
Tool2: 前锋变量检查工具功能描述:可以对某个页面,某个配置文件,数据库 查找所有的前锋型变量。将这些变量陈列出来给开发人员或者管理人员来分析。
1.5. 面向框架-的结构
Ui
Service+ (data imp)
2. Code
public static <t> t getBean(Class<t> class1) {
// attilax 老哇的爪子 j_48_40 o92
if (ati == null) // ini singleon patter..
{
ati = Guice.createInjector(new Module() {
@Override
public void configure(Binder BinderObj) {
AnnotatedBindingBuilder<DBCfg> bind = BinderObj.bind(DBCfg.class);
bind.toInstance(
getDbcfg().execute(null));
BinderObj.bind(DBX.class).to(DbutilX.class);
BinderObj.bind(Connection.class).to(ConnectionImp.class);
BinderObj.bind(UrlDslParser.class).to(UrlDslParserV3.class);
BinderObj.bind(StoreService.class).to(OrmStoreService.class);
BinderObj.bind(Function.class)
.annotatedWith(Names.named("order_service_dataMaper"))
.to(order_service_dataMaper4bet.class);
2.0.1. orderService
@Inject
private LogSvr logSvr;
@Inject @Named("order_service_dataMaper")
public Function dataMaper;
public int insert(Map order) {
// /...insert
order.put("$op", "insert");
order.put("order_id", filex.getUUidName());
order.put("order_money", needMoney);
dataMaper.apply(order);
storeSvr.insert(order);
int rzt = accSvr.reduceAmount(u.id.toString(), needMoney.doubleValue());
2.0.2. order_service_dataMaper4bet
package com.attilax.order;
import java.util.Map;
import java.util.function.Function;
public class order_service_dataMaper4bet implements Function {
@Override
public Object apply(Object t) {
Map order=(Map) t;
order.put("ocid", order.get("order_id"));
return null;
}
}
2.1. Everyting is file ----------linux
Everything is 精灵------gameing..