1700479391
1700479392
}
1700479393
1700479394
//邮件都有内容
1700479395
1700479396
public String getContext(){
1700479397
1700479398
return context;
1700479399
1700479400
}
1700479401
1700479402
}
1700479403
1700479404
很奇怪,是吗?抽象类没有抽象的方法,设置为抽象类还有什么意义呢?有意义,在这里我们定义了一个这样的抽象类:它具有邮件的所有属性,但不是一个具体可以被实例化的对象。例如,你对邮件服务器说“给我制造一封邮件”,邮件服务器肯定拒绝,为什么?你要产生什么邮件?什么格式的?邮件对邮件服务器来说是一个抽象表示,是一个可描述但不可形象化的事物。你可以这样说:“我要一封标题为XX,发件人是XXX的文本格式的邮件”,这就是一个可实例化的对象,因此我们的设计就产生了两个子类以具体化邮件,而且每种邮件格式对邮件的内容都有不同的处理。我们首先看文本邮件,如代码清单33-2所示。
1700479405
1700479406
代码清单33-2 文本邮件
1700479407
1700479408
public class TextMail extends MailTemplate{
1700479409
1700479410
public TextMail(String_from,String_to,String_subject,String_context){
1700479411
1700479412
super(_from,_to,_subject,_context);
1700479413
1700479414
}
1700479415
1700479416
public String getContext(){
1700479417
1700479418
//文本类型设置邮件的格式为:text/plain
1700479419
1700479420
String context=”\nContent-Type:text/plain;charset=GB2312\n”
1700479421
1700479422
+super.getContext();
1700479423
1700479424
//同时对邮件进行base64编码处理,这里用一句话代替
1700479425
1700479426
context=context+”\n邮件格式为:文本格式”;
1700479427
1700479428
return context;
1700479429
1700479430
}
1700479431
1700479432
}
1700479433
1700479434
我们覆写了getContext方法,因为要把一封邮件设置为文本邮件必须加上一个特殊的标志:text/plain,用于告诉解析这份邮件的客户端:“我是一封文本格式的邮件,别解析错了”。同样,超文本格式的邮件也有类似的设置,如代码清单33-3所示。
1700479435
1700479436
代码清单33-3 超文本邮件
1700479437
1700479438
public class HtmlMail extends MailTemplate{
1700479439
1700479440
public HtmlMail(String_from,String_to,String_subject,String_context){
[
上一页 ]
[ :1.700479391e+09 ]
[
下一页 ]