工厂模式之抽象工厂模式

来源:互联网 发布:spark submit python 编辑:程序博客网 时间:2024/06/06 11:01

抽象工厂模式:




以脸萌为例,当圣诞节、元旦节、新年来了,需要生产一个节日系列的脸萌产品,不同节日系列的人物..

1>首先有男孩女孩:

package com.zy.factoryProject;/** * 男孩 *  * @author Administrator *  */public interface Boy {public void drawMan();}

package com.zy.factoryProject;/** * 女孩 *  * @author Administrator *  */public interface Girl {public void drawWomen();}

2>当各种节日来了就会有不同系列的男孩女孩,以圣诞节和新年系列为例:(  分别继承Boy和Girl接口)

package com.zy.factoryProject;/** * 圣诞系列的男孩子 * @author Administrator * */public class MCBoy implements Boy {@Overridepublic void drawMan() {System.out.println("---圣诞系列的男孩子---");}}

package com.zy.factoryProject;/** * 圣诞系列的女孩子 *  * @author Administrator *  */public class MCGirl implements Girl {@Overridepublic void drawWomen() {System.out.println("---圣诞系列的女孩子---");}}

package com.zy.factoryProject;/** * 新年系列的男孩子 *  * @author Administrator *  */public class HNBoy implements Boy {@Overridepublic void drawMan() {System.out.println("---新年系列的男孩子---");}}

package com.zy.factoryProject;/** * 新年系列的女孩子 *  * @author Administrator *  */public class HNGirl implements Girl {@Overridepublic void drawWomen() {System.out.println("新年系列的女孩子");}}

*现在创建好了节日系列的男孩女孩人物,需要创建一个工厂,提供给外界调用

1>人物创建工厂:(PersonFactory.java)

package com.zy.factoryProject;public interface PersonFactory {// 男孩接口public Boy getBoy();// 女孩接口public Girl getGirl();}

2>节日系列人物创建工厂,继承自人物创建工厂:(MCFactory.java)

package com.zy.factoryProject;/** * 圣诞系列加工厂 *  * @author Administrator *  */public class MCFactory implements PersonFactory {@Overridepublic Boy getBoy() {return new MCBoy();}@Overridepublic Girl getGirl() {return new MCGirl();}}

package com.zy.factoryProject;/** * 新年系列加工厂 *  * @author Administrator *  */public class HNFactory implements PersonFactory {@Overridepublic Boy getBoy() {return new HNBoy();}@Overridepublic Girl getGirl() {return new HNGirl();}}

3>客户端调用测试:

PersonFactory pf = new MCFactory();Girl girl = pf.getGirl();girl.drawWomen();


工厂方法模式和抽象工厂模式的对比:

1>工厂方法模式是一种极端情况的抽象工厂模式,而抽象工厂模式可以看成  是工厂模式的推广
2>工厂方法模式用来创建一个产品的等级结构,而抽象工厂模式是用来创  建多个产品的等级结构
3>工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个抽象产品类

工厂模式常见的应用:
JDBC:

  对各种数据库提供统一的访问接口,客户端决定需要那种数据库就由数据   操作工厂生产对应的数据连接.



0 0
原创粉丝点击