JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Software Design » Design Pattern  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 一個Design Pattern 使用interface的問題..
sclin0323





發文: 58
積分: 0
於 2012-08-29 22:50 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Dear All:

傳統Design Pattern範例:

1
2
3
public interface Controller {
  public void save();
}

1
2
3
4
5
6
public class Test1Controller implements Controller {
  @Override
  public void save() {
    System.out.println("Test1 Save!!");
  }
}

1
2
3
4
5
6
public class Test2Controller implements Controller {
  @Override
  public void save() {
    System.out.println("Test2 Save!!");
  }
}

1
2
3
4
5
6
  public static void main(String[] args) {
    Controller controller1 = new Test1Controller();
    Controller controller2 = new Test2Controller();
    controller1.save();  
    controller2.save();
  }


在main中宣告controller1和controller2 執行save分別印出 Test1 Save 和 Test2 Save

我的問題是...

萬一Test2Controller 必須新增一個Method 而這Method並不希望定義在interface,
也就是這Method是Test2Controller 獨有的Method...
如:

1
2
3
4
5
6
7
8
9
public class Test2Controller implements Controller {
  @Override
  public void save() {
    System.out.println("Test2 Save!!");
  }
        public void test2_method(){
                System.out.println("Test2 Only!!");
        }
}


因此我在main中controller2中發現無法直接執行test2_method(),目前想到的作法是
先把該controller 轉至成 Test2Controller,再去執行test2_method()。

請問該種情境是否有更好的寫法?? 麻煩各位前輩了 謝謝!!


reply to postreply to post
作者 Re:一個Design Pattern 使用interface的問題.. [Re:sclin0323]
kentyeh





發文: 641
積分: 6
於 2012-08-30 09:05 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public interface Controller2 extends Controller {
  public void test2_method();
}
 
public class Test2Controller implements Controller2 {
  @Override
  public void save() {
    System.out.println("Test2 Save!!");
  }
  @Override
  public void test2_method(){
      System.out.println("Test2 for Controller2 Only!!");
  }
}

例如原來的Controller是車,而各種車都implement Controller,
所來發現實做的車中有一款會飛,與其說是這款車的特殊功能,
還不如說出現一種新的飛天車


reply to postreply to post
作者 Re:一個Design Pattern 使用interface的問題.. [Re:kentyeh]
bbbr





發文: 87
積分: 1
於 2012-08-31 10:28 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
kentyeh wrote:
例如原來的Controller是車,而各種車都implement Controller,
所來發現實做的車中有一款會飛,與其說是這款車的特殊功能,
還不如說出現一種新的飛天車

有另一個想法,延續您的譬喻比較容易說明:
Controller(車)介面中定義車輛行駛功能,Controller2(飛行器)介面中定義飛行功能
讓Test2Controller(霹靂車) implements Controller, Controller2
這樣未來若要讓霹靂車加入潛水功能(Controller3)也容易些


reply to postreply to post
» JWorld@TW »  Software Design » Design Pattern

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8