40歳からのキャリアチェンジ

20代はエンジニア・PM、30代はWeb系エンジニア向けのキャリアアドバイザー。40代の今はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連あたり

壊してまた作り直す



以前に書いたエントリ
WindowsのWSH上でPrototype.jsを利用するやり方がわかったので、普段の仕事を効率化させるツールがあともうちょっとで完成しそうなんだけど、いままでコツコツ勉強していたおかげかもしれないけど、急に視界が開けた感じがしてて、イイ感じに機能毎に分ける事が出来てきた。
と書いたけど、色々あってスクラップ&ビルドすることにしました。

別に問題なく動いているんだけど、なんていうか色々な機能を付け加えるのにものすごく勝手が悪い作りになっているので、このままの状態で機能追加していくと、増改築を繰り返す旅館のような状態になるのは目に見えているので、折角つくったものだけど、考え直す事にしました。

考え直すにあたって、増補改訂版Java言語で学ぶデザインパターン入門という本をものすごく昔に衝動買いしてずっと積ん読状態だったけど、今の自分のタイミングでこの本を読むのがまさにピッタリだったので、デザインパターンについて勉強しながらどのパターンを適用すればいいのかを試行錯誤してます。

とりあえずソースを晒すとこんな感じ。(あーちなみに、WindowsのWSH上でPrototype.jsを利用することが前提で考えています)


--model.js--
var parentModel = Class.create({
connectDB:function(sql){
var _obj = function(){};
var strConnection = "File Name=C:\\udl\\xxxx.udl";
var objADO = new ActiveXObject("ADODB.Connection");
objADO.0pen(strConnection); // 注)Openは数字のゼロになっています。
var objRS = objADO.Execute(sql);
return objRS.getRows().toArray();
}
});

--staff.js--
var Staff = Class.create(parentModel,{
initialize: function(sql){
var _rs = this.connectDB(sql);
this.name = _rs[0];
},
getName:function(){
return this.name;
}
});

--Order.js--
var Order = Class.create(parentModel,{
initialize: function(sql){
var _rs = this.connectDB(sql);
this.order_cd = _rs[0];
this.info = _rs[1];
},
getOrderCD:function(){
return this.order_cd;
},
getInfo:function(){
return this.info;
}
});



基本的なDBへの接続処理はmodelで定義されていて、それを継承する形でそれぞれのモデルを定義するイメージで、Staff.jsもOrder.jsもmodel.jsを継承。継承の機能はPrototype.jsの1.6の書き方でやってみた。

あとは、main.wsfというファイルの中で、prototype.js、model.js、Staff.js、Order.jsというのを読み込んで

var strSQL = "SELECT name,cd "
+ "FROM xxxx "
+ "WHERE cd = '123456789'";
var user1 = new JCStaff(strSQL);
WScript.Echo(user1.getName());

とすると、欲しい情報が取得できるって段取りまで出来た。

昔から、user1.getName()みたいな形の書き方が出来るようになりたいなぁーと思ってたので、我ながら成長を実感した今日この頃。もう眠いので今日はここまで。


増補改訂版Java言語で学ぶデザインパターン入門



結城 浩
ソフトバンククリエイティブ
売り上げランキング: 16922



おすすめ度の平均: 4.5

5 好評のため改訂増補しています。
5 初級者から中級者へ
2 実践的ではないです
5 とてもわかりやすかった。
5 Javaの文法を理解した人へ。