Re: [問題] 有關呼叫method
※ 引述《enher (搗蛋三帥)》之銘言:
: 有A 跟B兩個JAVA檔
直接說兩個 class 可能還比較快
: 如果我B要使用A其中一個method
假設這個 method 叫做 foo()
: 除了
: 1 把 A new起來以外
: 2 用static在該method上
: 有其他的方式嗎
: 因為現在的情況可能以上兩種方式都不能使用
: 1 的話我只是要傳一些資訊給A的method做處理
: new A起來必須重新傳A需要的參數
: 但在B 內拿不到某些參數
: 2 的話在A方法內因為有用到this.XXXX
: 似乎就編譯不過了
: 所以想來問問是不是有其他方式
: 或是這兩種寫法還有能修正的地方
: 推 LPH66:你先搞清楚 A 那個 method 的使用情境再說 02/14 21:32
: → enher:抱歉 可以請你稍微說明一下使用情境是? 02/14 21:38
我想,反而是你需要把你的情境說明的清楚一點
而不是要 LPH66 說明清楚一點
因為我最近很無聊,所以就來代打回一下這篇
根據你說的,基本上我們可以得到下列的前提
1. 你改得動 A 這個 class
(你可以對 A 的 foo 掛上 static)
2. A 這個 class 做了一定程度的封裝
根據前提 2,那麼你的問題 & 你要問 LPH66 的問題就有一點無釐頭
(畢竟只有你知道你要寫什麼功能 & A 長啥樣子)
或著,倒過來說可能比較能讓你懂:
為甚麼 A.foo() 需要用到 A 中 XXXX 這個 field 呢?
又為甚麼在 new A() 的時候需要傳遞參數
(直覺是 constructor 需要的參數會影響 XXXX 這個 field)
如果我們很善良的把撰寫 A 的人
假設成一個有基本 OO 觀念、負責的 programmer
他可能遵守類似像單一責任原則、開放封閉原則
那麼基本上 A 之所以為 A(謎之聲:啊不然咧?)
以及 A.foo() 之所以能運作,很可能就是因為必須滿足上述那兩個問題
不然,他幹麼千辛萬苦的還要 new 個 A 才能呼叫 foo
按照你的需求去設計 interface 不是很美妙嗎?
如果你不想鳥上頭這堆繞圈子的鳥話
那回到前提 1,我會建議你直接對照 A.foo() 重新刻一個你需要的 method
然後要嘛就是 A 的作者太混蛋
不然有很大的機率(大概跟樂透啥都沒中一樣大)
你會發現這一切是必要之惡
也就是所謂「A 那個 method 的使用情境」
=====
好廢話的一篇 Orz
--
錢鍾書: 說出來的話
http://www.psmonkey.org
比不上不說出來的話
Java 版 cookcomic 版
只影射著說不出來的話
and more......
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.29.97
推
02/14 23:12, , 1F
02/14 23:12, 1F
→
02/14 23:15, , 2F
02/14 23:15, 2F
推
02/15 00:01, , 3F
02/15 00:01, 3F
討論串 (同標題文章)