首页 > 学院 > 开发设计 > 正文

抽象工厂模式

2019-11-15 00:19:34
字体:
来源:转载
供稿:网友
抽象工厂模式

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 }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表