Java设计模式-----Abstract Factory抽象工厂模式

Abstract Factory抽象工厂模式:

为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。大致意思是说:我们在创建这些对象的时候,并不需要指定它们的具体类,这些具体类的对象是由工厂对象负责实例化的。

例子:

  1. public abstract class DisplayDriver {  
  2. }  
  3.   
  4. public abstract class PrintDriver {  
  5. }  
  6.   
  7. public class HRDD extends DisplayDriver {  
  8.   
  9.     public HRDD() {  
  10.         System.out.println("使用高端机的显示驱动程序");  
  11.     }  
  12. }  
  13.   
  14. public class HRPD extends PrintDriver {  
  15.   
  16.     public HRPD() {  
  17.         System.out.println("使用高端机的打印驱动程序");  
  18.     }  
  19. }  
  20.   
  21. public class LRDD extends DisplayDriver {  
  22.       
  23.     public LRDD() {  
  24.         System.out.println("使用低端机的显示驱动程序");  
  25.     }  
  26. }  
  27.   
  28. public class LRPD extends PrintDriver {  
  29.   
  30.     public LRPD() {  
  31.         System.out.println("使用低端机的打印驱动程序");  
  32.     }  
  33. }  
  34.   
  35. public abstract class ResFactory {  
  36.   
  37.     abstract public DisplayDriver getDisplayDrvr();  
  38.   
  39.     abstract public PrintDriver getPrintDrvr();  
  40. }  
  41.   
  42. public class HighResFact extends ResFactory {  
  43.   
  44.     public DisplayDriver getDisplayDrvr() {  
  45.         return new HRDD();  
  46.     }  
  47.   
  48.     public PrintDriver getPrintDrvr() {  
  49.         return new HRPD();  
  50.     }  
  51. }  
  52.   
  53. public class LowResFact extends ResFactory {  
  54.   
  55.     public DisplayDriver getDisplayDrvr() {  
  56.         return new LRDD();  
  57.     }  
  58.   
  59.     public PrintDriver getPrintDrvr() {  
  60.         return new LRPD();  
  61.     }  
  62. }  
  63.   
  64. public class ApControl {  
  65.       
  66.     public static ResFactory getResFactory(ResFactory factory) {  
  67.         return factory;  
  68.     }  
  69.   
  70.     public static void main(String[] args) {  
  71.   
  72.         ResFactory highResFact = ApControl.getResFactory(new HighResFact());  
  73.         highResFact.getDisplayDrvr();  
  74.         highResFact.getPrintDrvr();  
  75.         ResFactory lowResFact = ApControl.getResFactory(new LowResFact());  
  76.         lowResFact.getDisplayDrvr();  
  77.         lowResFact.getPrintDrvr();  
  78.     }  
  79. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值