标签:
介绍工厂方法模式之前先需要知道简单工厂模式,简单工厂模式是类的创建模式,又叫静态工厂方法模式,简单工厂模式是由一个工厂对象决定创建出哪一种产品类:
1 //抽象产品接口 2 interface Product{ 3 public void method(); 4 } 5 6 //具体产品类 7 class ProductA implements Product{ 8 9 @Override 10 public void method() { 11 //业务代码 12 } 13 14 } 15 16 class ProductB implements Product{ 17 18 @Override 19 public void method() { 20 //业务代码 21 } 22 23 } 24 25 class Factory{ 26 27 public Product getProduct(String type){ 28 if("A".equals(type)) 29 return new ProductA(); 30 else if("B".equals(type)) 31 return new ProductB(); 32 else 33 return null; 34 } 35 }
工厂方法模式是简单工厂的拓展形式,将工厂类也进行抽象化,由具体的实现了工厂接口的具体的工厂类创建对象:
1 //抽象产品类 2 interface File{ 3 public void method(); 4 } 5 6 //具体产品类 7 class HTMLFileA implements File{ 8 9 @Override 10 public void method() { 11 //业务代码 12 } 13 14 } 15 16 class HTMLFileB implements File{ 17 18 @Override 19 public void method() { 20 //业务代码 21 } 22 23 } 24 25 class XMLFileA implements File{ 26 27 @Override 28 public void method() { 29 //业务代码 30 } 31 32 } 33 34 class XMLFileB implements File{ 35 36 @Override 37 public void method() { 38 //业务代码 39 } 40 41 } 42 43 //抽象工厂接口 44 interface Factory{ 45 public File getFile(String type); 46 } 47 48 //具体工厂类 49 class HTMLFactory implements Factory{ 50 51 @Override 52 public File getFile(String type) { 53 if("A".equals(type)) 54 return new HTMLFileA(); 55 else if("B".equals(type)) 56 return new HTMLFileB(); 57 else 58 return null; 59 } 60 61 } 62 63 class XMLFactory implements Factory{ 64 65 @Override 66 public File getFile(String type) { 67 if("A".equals(type)) 68 return new XMLFileA(); 69 else if("B".equals(type)) 70 return new XMLFileB(); 71 else 72 return null; 73 } 74 75 }
标签:
原文地址:http://www.cnblogs.com/gsbm/p/4771853.html