Re: [資料] 神之物件 (God object, Blob AntiPattern)

看板OOAD作者 (godfat 真常)時間17年前 (2007/08/03 12:42), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/19 (看更多)
※ 引述《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
文章代碼(AID): #16ih9AyE (OOAD)
討論串 (同標題文章)
文章代碼(AID): #16ih9AyE (OOAD)