Re: [問題] 圖形介面的設計模式
下面MyClass這些是我自己摸索出來的方法
我不確定有沒有正規的教材去教這類東西
就是,使用interface去做一個顯示訊息的介面
例如:
interface IAcetion<Tin>
{
void invoke(Tin tin);
}
然後,可以在功能運作或是計算的部分的class加個欄位
class MyClass
{
IAcetion<String> show;
......
}
在使用MyClass的時候,看你要把show放到建構子傳進去
或用個setShow(IAcetion<String> show)放進去都可以
class OuterClass
{
MyClass myClass;
class Show implement IAcetion<String>
{
public void invoke(String tin)
{
//顯示用的的程式碼,例如System.out.println(tin);
}
}
public OuterClass()
{
myClass = new MyClass(new Show()); //把顯示的方法設定進去
........
}
.......
}
之後,在MyClass的計算部分,計算完畢後,再去呼叫執行輸出的部分
class MyClass
{
......
public void count()
{
String s = "計算完畢的結果";
show.invoke(s);
}
}
這樣的好處是,可以把一個MyClass跟其他部分切割得很乾淨
如果設計的夠好的話,這個class可以從console模式搬到GUI、JSP、android
而且不用改任何一行程式
※ 引述《wbreeze (de)》之銘言:
: 小弟可以算是接觸Java不久的新手,對於Java圖形介面的開發有濃厚的興趣,
: 以往也撰寫過簡單的Java GUI程式,
: 但對於程式的邏輯與圖形的設計概念尚有疑惑,望版上有高手能出面解惑。
: 以下切入正題─
: case 1.
: ┌─────────────┐
: │class MyClass │
: │ │
: │ │
: │ │
: │ │
: │ │
: │ │
: └─────────────┘
: MyClass中直接讓程式邏輯及GUI component交互作用(摻在一起做撒尿牛丸
: case 2.
: ┌──────────────┐
: │class OuterClass │
: │ │
: │ ┌─────────┐ │
: │ │class MyClass │ │
: │ │ │ │
: │ │ │ │
: │ │ │ │
: │ └─────────┘ │
: │ │
: └──────────────┘
: MyClass是整個程式的主要邏輯部分,而OuterClass負責將圖形元件與邏輯的部分連結,
: 以便讓元件呈現出對應的行為。
: 個人比較意向case 2的方法,如此可保持MyClass的可讀性(維護性?),
: 但也會因此造成程式參數傳遞的複雜度(或者小弟功力不足才覺得很複雜 OTZ),
: 而且有時候也很難清楚的切割圖形控制與程式邏輯的界線 ("゜Д゜)
: 板上是否有資深的大大可以提出一點看法供小弟參考,在此感謝大家。
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.16.65
推
05/17 14:02, , 1F
05/17 14:02, 1F
討論串 (同標題文章)