工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类可以创建多个具体产品类的实例。
区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。
工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。
下面是javaeye一位仁兄的列子:
抽象工厂代码
package com.tao.pattern.abstractFactory;
public abstract class AbstractFactory {
/**
* 生成用户数据库操作类实例
*
* @return
*/
public abstract UserDAO createUserDAO();
/**
* 生成角色数据库操作类实例
*
* @return
*/
public abstract RoleDAO createRoleDAO();
}
package com.tao.pattern.abstractFactory;
public abstract class AbstractFactory {
/**
* 生成用户数据库操作类实例
*
* @return
*/
public abstract UserDAO createUserDAO();
/**
* 生成角色数据库操作类实例
*
* @return
*/
public abstract RoleDAO createRoleDAO();
}
抽象工厂的hibernte实现代码
package com.tao.pattern.abstractFactory;
public class HibernateFactory extends AbstractFactory {
@Override
public RoleDAO createRoleDAO() {
return new RoleDAOImplHibernate();
}
@Override
public UserDAO createUserDAO() {
return new UserDAOImplHibernate();
}
}
package com.tao.pattern.abstractFactory;
public class HibernateFactory extends AbstractFactory {
@Override
public RoleDAO createRoleDAO() {
return new RoleDAOImplHibernate();
}
@Override
public UserDAO createUserDAO() {
return new UserDAOImplHibernate();
}
}
抽象工厂的toplink实现代码
package com.tao.pattern.abstractFactory;
public class TopLinkFactory extends AbstractFactory {
@Override
public RoleDAO createRoleDAO() {
return new RoleDAOImplTopLink();
}
@Override
public UserDAO createUserDAO() {
return new UserDAOImplTopLink();
}
}
package com.tao.pattern.abstractFactory;
public class TopLinkFactory extends AbstractFactory {
@Override
public RoleDAO createRoleDAO() {
return new RoleDAOImplTopLink();
}
@Override
public UserDAO createUserDAO() {
return new UserDAOImplTopLink();
}
}
角色数据库操作代码
package com.tao.pattern.abstractFactory;
public interface RoleDAO { // 角色数据库操作
void save();
}
package com.tao.pattern.abstractFactory;
public interface RoleDAO { // 角色数据库操作
void save();
}
角色数据库操作的hibernate实现代码
package com.tao.pattern.abstractFactory;
public class RoleDAOImplHibernate implements RoleDAO {
@Override
public void save() {
System.out.println("RoleDAOImplHibernate save!");
}
}
package com.tao.pattern.abstractFactory;
public class RoleDAOImplHibernate implements RoleDAO {
@Override
public void save() {
System.out.println("RoleDAOImplHibernate save!");
}
}
角色数据库操作的toplink实现代码
package com.tao.pattern.abstractFactory;
public class RoleDAOImplTopLink implements RoleDAO {
@Override
public void save() {
System.out.println("RoleDAOImplTopLink save!");
}
}
package com.tao.pattern.abstractFactory;
public class RoleDAOImplTopLink implements RoleDAO {
@Override
public void save() {
System.out.println("RoleDAOImplTopLink save!");
}
}
用户数据库操作接口代码
public interface UserDAO {
void save();
}
public interface UserDAO {
void save();
}
用户数据库操作的hibernate实现代码
package com.tao.pattern.abstractFactory;
public class UserDAOImplHibernate implements UserDAO {
@Override
public void save() {
System.out.println("UserDAOImplHibernate save!");
}
}
package com.tao.pattern.abstractFactory;
public class UserDAOImplHibernate implements UserDAO {
@Override
public void save() {
System.out.println("UserDAOImplHibernate save!");
}
}
用户数据库操作的toplink实现代码
package com.tao.pattern.abstractFactory;
public class UserDAOImplTopLink implements UserDAO {
@Override
public void save() {
System.out.println("UserDAOImplTopLink save!");
}
}
分享到:
相关推荐
工厂方法模式和抽象工厂模式的区别,对工厂方法模式和抽象工厂模式做了简单的比较
4.简单工厂-工厂方法-抽象工厂 对比总结
介绍的是工厂模式 包括简单工厂模式、工厂方法模式、抽象工厂模式 包括PPT和代码
工厂方法与抽象工厂设计模式,这份文档介绍了这种设计模式
Java实现的工厂模式,抽象工厂,工厂方法模式
本文章通俗易懂的对工厂模式进行了讲解,相信您看完这篇文章会对工厂模式有更深入的了解
设计模式之工厂方法、简单工厂、抽象工厂
抽象工厂设计模式抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式
java 23种设计模式 工厂方法模式和抽象工厂模式,详细源码分析请看博客: http://blog.csdn.net/github_22022001/article/details/42100257 http://blog.csdn.net/github_22022001/article/details/42101157 ...
介绍工厂模式,工厂方法和抽象工厂。三个模式的适应情况,以及其区别。
java设计模式 抽象工厂模式详解 一张图让你彻底明白抽象工厂模式
从简单工厂,到工厂方法到抽象工厂,这几种都带有“工厂”的模式,总是容易叫人迷糊,我仔细研究了下,然后用简单的例子做类比,列出了自己的通俗理解和比较,大部分是自己的体会,感觉理的比较清楚,末尾提了下...
深入浅出设计模式之抽象工厂模式+工厂方法模式+策略模式实现手机加工厂(加类图)
用java语言实现工厂方法模式和抽象工厂模式
本资源主要介绍工厂方法模式和抽象工厂模式。二者都与工厂相关,,但是其本质又大相径庭。这里先来简单介绍下二者的区别,以免混淆。 抽象工厂模式:提供一个接口,用于创建一系列相关的对象,而无需指定具体的类。...
NULL 博文链接:https://1193355343.iteye.com/blog/2370838
设计模式,AbstractFactory,抽象工厂模式
工厂模式在一些设计模式的书中分为简单工厂模式,工厂方法模式和抽象工厂模式三类。也有把工厂方法模式划分到抽象工厂模式的,认为工厂方法是抽象工厂模式的特例的一种,就是只有一个要实现的产品接口。
设计模式中工厂相关模式有简单工厂、工厂方法、抽象工厂学习后的练习代码,C++编程语言。
1、抽象工厂模式+反射技术 2、抽象工厂模式+简单工厂模式 3、仅仅是抽象工厂模式