Re: [資料] 神之物件 (God object, Blob AntiPattern)
※ 引述《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
討論串 (同標題文章)
OOAD 近期熱門文章
PTT數位生活區 即時熱門文章