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

» JWorld@TW » Software Design  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Re:有關一個Domain Object的設計 [Re:try]
ingramchen

Web monkey



發文: 479
積分: 12
於 2005-12-07 05:09 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
如果你的軟體本身就是個 Mail Client(像 outlook) or Mail Server 的話,那麼 vcMail 就可稱作是 Domain Object。如果不是,那麼 vcMail 在你的系統裡只是個傳遞訊息的 "工具" 而已。

就我所見郵件和郵差是兩件事。郵件有內容,有地址,而郵差則根據郵件的資料來做投遞的動作。郵件和郵差兩個東西合併成一個物件就像是 "郵件上註明由那個郵差來寄信" 一樣無理。當然這是用現實生活的一般經驗來思考啦,如果是特殊需求就另當別論。

anyway, 看起來你像是要做 framework 的感覺, 如果你希望核心程式不跟其他元件相關,那麼核心程式所溝通的東西全部都要是 interface,而不是 concrete class vcMail。
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
41
42
//MyCore only knows interface NotifyComponent, it does not know VcMail 
public class MyCore {
    
    private NotifyComponent notifyComponent ;    
    public void doNotify(Target target, message) {
          notifyComponent.notify(target, message) ;
    }     
 
    public void registerNotifyComponent(NotifyComponent notifyComponent) {
          this.notifyComponent = notifyComponent ;
    }
}
 
//NotifyComponent is just interface
public interface NotifyComponent {
    public void notify(Target target, Message message) ;
}
 
//concrete implementation of NotifyComponent
public class VcMailNotifier implements NotifyComponent {
 
    private MailAgent agent = MailAgent.getAnonymous("msa.hinet.net");
 
    public void notify(Target target, Message message) {
            MailMessage mailMessage = new MailMessage() ;
            mailMessage.setTo(target.getEmail());
            mailMessage.setContent(message.toString());
            //....
            agent.send(mailMessage);
    }
}
 
//============================
//To use your MyCore:
 
   MyCore myCore = new MyCore() ;
 
   //assembly myCore with various components:
   myCore.registerNotifyComponent(new VcMailNotifier());
   
   //after your myCore constructed, you can do services:
   myCore.doNotify(....) ;


reply to postreply to post
MyBlog | 訂便當管理系統

話題樹型展開
人氣 標題 作者 字數 發文時間
3553 有關一個Domain Object的設計 ericwang1017 1231 2005-12-06 12:01
3000 Re:有關一個Domain Object的設計 ingramchen 772 2005-12-06 13:44
2989 Re:有關一個Domain Object的設計 try 292 2005-12-06 22:04
3232 Re:有關一個Domain Object的設計 ingramchen 1680 2005-12-07 05:09
3021 Re:有關一個Domain Object的設計 ericwang1017 905 2005-12-06 23:00
» JWorld@TW »  Software Design

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