前言
本章讲解设计模式中抽象工厂设计模式的相关知识
方法
1.概念
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
之前讲到过的工厂设计模式,只是对单一产品的生成。而该模式是对产品族的生成!
比如之前举的例子,是工人、教师和学生。那么我们本次举工作。工作分为好工作和差工作,好工作当然是工资高、待遇好。差工作就是工资低、待遇差。那么我们生成工作对象的时候就不能简单的使用工厂设计模式了。需要使用本次提到的抽象工厂设计模式。
2.抽象工厂设计模式的实现思路
1)创建相应工程
2)创建工资接口和待遇接口
package abstarctFactory;
/**
* 工资接口
* @author jwang
*
*/
public interface GZ {
public void run();//接口方法
}
package abstarctFactory;
/**
* 待遇接口
* @author jwang
*
*/
public interface DY {
public void run();//接口方法
}
3)创建高工资和低工资实现类,以及高待遇、低待遇实现类
package abstarctFactory;
public class HighGZ implements GZ {
@Override
public void run() {
System.out.println("工资高...");
}
}
package abstarctFactory;
public class LowGZ implements GZ {
@Override
public void run() {
System.out.println("工资低...");
}
}
package abstarctFactory;
public class HighDY implements DY {
@Override
public void run() {
System.out.println("待遇好...");
}
}
package abstarctFactory;
public class LowDY implements DY {
@Override
public void run() {
System.out.println("待遇差...");
}
}
4)创建工作抽象工厂
package abstarctFactory;
/**
* 抽象工厂方法
* @author jwang
*
*/
public interface WorkFactory {
public GZ createGZ();//工资创建方法
public DY createDY();//待遇创建方法
}
5)创建好工作工厂和差工作工厂
package abstarctFactory;
/**
* 好工作实现类
* @author jwang
*
*/
public class GoodWorkFactory implements WorkFactory {
@Override
public GZ createGZ() {
return new HighGZ();
}
@Override
public DY createDY() {
return new HighDY();
}
}
package abstarctFactory;
/**
* 差工作实现类
* @author jwang
*
*/
public class BadWorkFactory implements WorkFactory {
@Override
public GZ createGZ() {
return new LowGZ();
}
@Override
public DY createDY() {
return new LowDY();
}
}
6)编写测试代码进行试验
package abstarctFactory;
public class Test {
public static void main(String[] args) {
WorkFactory good = new GoodWorkFactory();
GZ gz = good.createGZ();
DY dy = good.createDY();
gz.run();
dy.run();
}
}
代码执行结果如下:
该模式没有传统的工厂模式用的频率高!