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

» JWorld@TW » Software Design » Effective Java  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
話題被移動
該話題已被移動 - morchory , 2003-10-03 01:40
如果您尚不清楚該話題被移動的原因,請參考論壇規則以及本版公告或者聯系本版版主。
本主題所含的標籤
無標籤
作者 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 [Re:metavige]
ingramchen

Web monkey



發文: 479
積分: 12
於 2003-10-01 18:48 user profilesend a private message to usersend email to ingramchenreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
原文是:

A third advantage of static factory methods is that, unlike constructors,
they can return an object of any subtype of their return type.

這樣比較好懂吧?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public abstract Shape class {
      
      public static int SQUARE = 1 ;
      public static int CIRCLE = 2 ;
      public static int TRIANGLE = 3 ;
 
      public static Shape ShapeFactory(int shapeType) {
            switch(shapeType) {
                 case SQUARE:
                       return new Square() ;
                 case CIRCLE:
                       return new Circle();
                 case TRIANGLE:
                       return new Triangle();
                 default:
                       throw new ShapeCreateException("wrong shape definition") ; 
            }
      }
      public abstract void draw() ;
}
 
class Square extends Shape{
    public void draw() {
       // implement square
   }
}
 
class Circle extends Shape {
    public void draw() {
       // implement circle
    }
}
 
class Triangle extends Shape {
    public void draw() {
    // implement triangle
    }
}
 

<This line is eaten...........>

you client program:

1
2
3
4
5
6
7
public class Client {
     public void doSomething() {
        // client 的程式界面一致,新增 shape 不用 new 新的 class
        Shape s = Shape.ShapeFactory(Shape.SQUARE) ;
        s.draw() ; 
     }
}


使用上 ShapeFactory() 雖然是在父類別 Shape,但回傳的可以是他的子
類別,這樣是可以簡化使用者的介面,只要去學會操作 ShapeFactory 就
行了。若再配合多型 ( 上例的 draw() ),那未來程式增加新的子類別,
程式幾乎不用修改。


ingramchen edited on 2003-10-01 19:04
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
24888 [精華] [Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 metavige 1085 2003-10-01 14:51
22115 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 ymshin 106 2003-10-01 15:46
22194 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 metavige 553 2003-10-01 16:03
20771 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 davidlovesmoly 1120 2004-04-23 12:03
20767 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 metavige 1301 2004-04-23 14:37
20642 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 davidlovesmoly 260 2004-04-23 17:59
21184 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 davidlovesmoly 136 2004-04-23 18:05
15544 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 gongtow 782 2005-11-01 00:13
21918 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 ymshin 77 2003-10-01 16:26
22475 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 ingramchen 1532 2003-10-01 18:48
21985 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 metavige 273 2003-10-01 22:34
22336 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 Duncan 441 2003-10-01 22:10
21850 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 ymshin 81 2003-10-01 22:47
21897 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 wctang 815 2003-10-02 13:38
21883 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 iampoya 129 2003-10-02 14:57
21897 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 wctang 472 2003-10-02 16:08
21827 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 iampoya 461 2003-10-02 16:49
21893 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 Duncan 1539 2003-10-02 17:43
21911 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 wctang 1114 2003-10-02 18:12
21920 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 wctang 1607 2003-10-02 17:53
21904 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 Duncan 624 2003-10-02 18:08
21905 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 wctang 517 2003-10-02 18:21
21783 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 tempo 512 2003-10-03 09:35
21867 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 metavige 492 2003-10-02 20:42
21686 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 etman 466 2003-10-29 10:33
20600 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 LarryBank 27 2004-04-19 17:08
20567 Re:[Effective Java] 條款1 : 考慮以 "static factory methods" 取代建構式 metavige 150 2004-04-23 14:24
» JWorld@TW »  Software Design » Effective Java

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

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8