抽象工厂模式

王朝学院·作者佚名  2016-05-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

抽象工厂模式1.概述

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

2.适用性

1)一个系统要独立于它的产品的创建、组合和表示时

2)一个系统要由多个产品系列中的一个来配置时

3)当你要强调一系列相关的产品对象的设计以便进行联合使用时,

4)当你使用一个产品类库,而只想显示它们的接口而不是实现时,

3.参与者

1)AbstractFactory

声明一个创建抽象产品对象的操作接口

2)CreateFactory

实现创建具体产品对象的操作

3)AbstractPRoduct

为一类产品对象声明一个接口

4)CreateProduct

定义一个将被相应的具体工厂创建的产品对象,实现AbstractProduct

5)Client

仅使用由AbstractFactory和AbstractProduct类声明的接口

代码如下:

AbstractFactory包:

1 package abstractfactory;2 3 import abstractproduct.ICat;4 import abstractproduct.IDog;5 6 public interface IAnimalFactory {7 ICat createCat();8 IDog createDog();9 }

CreateFactory包:

package createfactory;import createproduct.BlackCat;import createproduct.BlackDog;import abstractfactory.IAnimalFactory;import abstractproduct.ICat;import abstractproduct.IDog;public class BlackAnimalFactory implements IAnimalFactory { @Override public ICat createCat() { // TODO Auto-generated method stub return new BlackCat(); } @Override public IDog createDog() { // TODO Auto-generated method stub return new BlackDog(); }}package createfactory;import createproduct.whileDog;import createproduct.whiteCat;import abstractfactory.IAnimalFactory;import abstractproduct.ICat;import abstractproduct.IDog;public class WhiteAnimalFactory implements IAnimalFactory { @Override public ICat createCat() { // TODO Auto-generated method stub return new whiteCat(); } @Override public IDog createDog() { // TODO Auto-generated method stub return new whileDog(); }}

AbstractProduct包:

1 package abstractproduct; 2 3 public interface ICat { 4 void eat(); 5 } 6 7 8 9 package abstractproduct;10 11 public interface IDog {12 void eat();13 }

CreateProduct包:

1 package createproduct; 2 3 import abstractproduct.ICat; 4 5 public class BlackCat implements ICat { 6 public void eat(){ 7 System.out.println("the black cat is eating"); 8 } 9 }10 11 12 13 package createproduct;14 15 import abstractproduct.IDog;16 17 public class BlackDog implements IDog {18 public void eat(){19 System.out.println("the black dog is eating");20 }21 }22 23 24 25 package createproduct;26 27 import abstractproduct.IDog;28 29 public class whileDog implements IDog {30 public void eat(){31 System.out.println("the white dog is eating");32 }33 }34 35 36 37 package createproduct;38 39 import abstractproduct.ICat;40 41 public class whiteCat implements ICat {42 public void eat(){43 System.out.println("the white cat is eating");44 }45 }

Client包:

1 package client; 2 3 import createfactory.BlackAnimalFactory; 4 import createfactory.WhiteAnimalFactory; 5 import abstractfactory.IAnimalFactory; 6 import abstractproduct.ICat; 7 import abstractproduct.IDog; 8 9 public class Client {10 11 public static void main(String args[]){12 IAnimalFactory blackAnimalFactory = new BlackAnimalFactory();13 ICat blackCat = blackAnimalFactory.createCat();14 blackCat.eat();15 IDog blackDog = blackAnimalFactory.createDog();16 blackDog.eat();17 18 IAnimalFactory whiteAnimalFactory = new WhiteAnimalFactory();19 ICat whiteCat = whiteAnimalFactory.createCat();20 whiteCat.eat();21 IDog whiteDog = whiteAnimalFactory.createDog();22 whiteDog.eat();23 }24 }

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航