如果一个产品家族中有多个产品, 而工厂需要创建多个产品家族, 那么前例中的工厂方法就自然演化为抽象工厂. 比如我们在前面的工厂方法的基础上再添加创建DeptDao的功能. //工厂接口 package designpattern.factory.abstractfactory; import designpattern.factory.*; public interface IFactory { public UserDao createUserDao(); public DeptDao createDeptDao(); } // package designpattern.factory.abstractfactory; import designpattern.factory.*; public class DB2DaoFactory implements IFactory{ public UserDao createUserDao() { return new UserDB2Dao(); } public DeptDao createDeptDao() { return new DeptDB2Dao(); } } // package designpattern.factory.abstractfactory; import designpattern.factory.*; public class OracleDaoFactory implements IFactory{ public UserDao createUserDao() { return new UserOracleDao(); } public DeptDao createDeptDao() { return new DeptOracleDao(); } } 优点: 便于切换产品家族.