java设计模式——抽象工厂模式

抽象工厂模式(Abstract Factory):抽象工厂--顾名思义,就是把工厂抽象出来,不同的工厂生产不同的产品。这样做有个好处:一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。

 

一、uml建模图

 

二、代码实现

 

[java] view plain copy

  1. /** 
  2.  * 示例:抽象工厂--顾名思义,就是把工厂抽象出来,不同的工厂生产不同的产品 
  3.  *  
  4.  * 优点:一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码 
  5.  */  
  6. interface Sender {  
  7.     public void send();  
  8. }  
  9.   
  10. class EmailSender implements Sender {  
  11.   
  12.     @Override  
  13.     public void send() {  
  14.         System.out.println("this is a email...");  
  15.     }  
  16. }  
  17.   
  18. class SmsSender implements Sender {  
  19.   
  20.     @Override  
  21.     public void send() {  
  22.         System.out.println("this is a sms...");  
  23.     }  
  24.   
  25. }  
  26.   
  27. /** 
  28.  * 角色:抽象工厂 
  29.  */  
  30. interface AbstractFactory {  
  31.     public Sender produce();  
  32. }  
  33.   
  34. /** 
  35.  * 邮件工厂 
  36.  */  
  37. class EmailSendFactory implements AbstractFactory {  
  38.   
  39.     @Override  
  40.     public Sender produce() {  
  41.         return new EmailSender();  
  42.     }  
  43. }  
  44.   
  45. /** 
  46.  * 短信工厂 
  47.  */  
  48. class SmsSendFactory implements AbstractFactory {  
  49.   
  50.     @Override  
  51.     public Sender produce() {  
  52.         return new SmsSender();  
  53.     }  
  54. }  
  55.   
  56. /** 
  57.  * 客户端测试类 
  58.  *  
  59.  * @author Leo 
  60.  */  
  61. public class Test {  
  62.     public static void main(String[] args) {  
  63.         /** 
  64.          * 创建工厂 
  65.          */  
  66.         AbstractFactory factory = new SmsSendFactory();  
  67.         /** 
  68.          * 生产产品 
  69.          */  
  70.         Sender sender = factory.produce();  
  71.         /** 
  72.          * 执行业务逻辑 
  73.          */  
  74.         sender.send();  
  75.     }  
  76.   
  77. }  

转载于:https://my.oschina.net/u/3345581/blog/890827

你可能感兴趣的:(java设计模式——抽象工厂模式)