打字猴:1.700479512e+09
1700479512 public class Client{
1700479513
1700479514 public static void main(String[]args){
1700479515
1700479516 //创建一封TEXT格式的邮件
1700479517
1700479518 MailTemplate m=new HtmlMail(“a@a.com”,“b@b.com”,“外星人攻击地球了”,”
1700479519
1700479520 结局是外星人被地球人打败了!”);
1700479521
1700479522 //创建一个Mail发送程序
1700479523
1700479524 MailServer mail=new MailServer(m);
1700479525
1700479526 //发送邮件
1700479527
1700479528 mail.sendMail();
1700479529
1700479530 }
1700479531
1700479532 }
1700479533
1700479534 运行结果如下所示:
1700479535
1700479536 ====正在发送的邮件信息====
1700479537
1700479538 发件人:a@a.com
1700479539
1700479540 收件人:b@b.com
1700479541
1700479542 邮件标题:外星人攻击地球了
1700479543
1700479544 邮件内容:
1700479545
1700479546 Content-Type:multipart/mixed;charset=GB2312
1700479547
1700479548 结局是外星人被地球人打败了!
1700479549
1700479550 邮件格式为:超文本格式
1700479551
1700479552 当然,如果想产生一封文本格式的邮件,只要稍稍修改一下场景类就可以了:new HtmlMail修改为new TextMail,读者可以自行实现,非常简单。在该场景中,我们使用策略模式实现两种算法的自由切换,它提供了这样的保证:封装邮件的两种行为是可选择的,至于选择哪个算法是由上层模块决定的。策略模式要完成的任务就是提供两种可以替换的算法。
1700479553
1700479554
1700479555
1700479556
1700479557 设计模式之禅 33.1.2 桥梁模式实现邮件发送
1700479558
1700479559 桥梁模式关注的是抽象和实现的分离,它是结构型模式,结构型模式研究的是如何建立一个软件架构,下面我们就来看看桥梁模式是如何构件一套发送邮件的架构的,如图33-3所示。
1700479560
1700479561 类图中我们增加了SendMail和Postfix两个邮件服务器来实现类,在邮件模板中允许增加发送者标记,其他与策略模式都相同。我们在这里已经完成了一个独立的架构,邮件有了,发送邮件的服务器也具备了,是一个完整的邮件发送程序。需要读者注意的是,SendMail类不是一个动词行为(发送邮件),它指的是一款开源邮件服务器产品,一般*nix系统的默认邮件服务器就是SendMail;Postfix也是一款开源的邮件服务器产品,其性能、稳定性都在逐步赶超SendMail。
[ 上一页 ]  [ :1.700479512e+09 ]  [ 下一页 ]