Atitit.biz業務系統 面向框架 面向模式---------數據映射imp 1.1. 面向變數 面向過程 面向對象 面向組件 面向框架 面向服務 面向模式1 1.2. 第2章 架構模式 18 1 1.3. 第3章 設計模式 143 2 1.4. 面向對象中的面向變數全局變數問題2 1.5. 面
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:[email protected]
轉載請註明來源: http://www.cnblogs.com/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..