作者godfat (godfat 真常)
看板OOAD
标题Re: [资料] 神之物件 (God object, Blob AntiPattern)
时间Fri Aug 3 12:42:47 2007
※ 引述《H45 (!H45)》之铭言:
: 在 Java 中,常常看见一个范例程式的主函式是长这样:
: public static void main (String[] args) {
: new MyProgram();
: }
: 这样还不打紧,转到 MyProgram.java 去看
: 哇!不得了了,上千行的程式码通通挤在 public MyProgram() 里面
其实我还满爱这样写的,但当然不可能产生 god object,
这种事能避免就尽量避免,不过有时候我觉得只是程度问题罢了。
举我最近在写的 Flash 为例:(XXX 是马赛克 XD)
function XXXPlayer(parent: MovieClip, url: String){
parent_ = parent;
body_ = parent_.createEmptyMovieClip("xxx_player",
parent_.getNextHighestDepth());
track_panel_ = new TrackPanel(body_);
// init the callbacks for whom need to be called
// whenever the track_list is done
var callbacks: Array = new Array();
// why do the push is in reversed order??
// below it would do track_panel_.init first...
callbacks.push(Delegate.create(this, this.init));
callbacks.push(Delegate.create(track_panel_, track_panel_.init));
track_list_ = new TrackList(url, callbacks);
this.volume = 100; // ugly init the volume
// 额外注解,上面这行其实是 setter, 不是 assign
// setup the ugly callback that comes from the track_view
// maybe we should introduce the real signal/slot mechanism
body_.change_track = Delegate.create(this, function(track: Track){
this.change_track(track);
});
}
接下来就再由 track_panel 和 track_list 自己去办事。
主程式大概就分三段:
1. url 处理
2. new XXXPlayer
3. new XXXPlayerView
写成:
// url 处理略过
new XXXPlayerView(new XXXPlayer(this, url));
我是觉得这种写法还满简明的。目前全程式约 600 行,7 个 class.
--
「行け!Loki!」
(rocky ロッキー)
-Gurumin ぐるみん 王子? XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.218.90.242