作者PsMonkey (痞子军团团长)
看板java
标题Re: [问题] 有关呼叫method
时间Tue Feb 14 22:53:29 2012
※ 引述《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
1F:推 enher:谢谢讲解 之所以这样问是因为 A是外包回来的程式 02/14 23:12
2F:→ enher:而B是我现在要加的东西 但上面希望用A的方法做处理 02/14 23:15
3F:推 germun:如果不能动A, 就随便丢个参数去new A不就好了... 02/15 00:01