大话设计模式java版--抽象工厂模式
2016-05-15 21:30
471 查看
抽象工厂模式--提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。--------引用GOF
抽象工厂模式个人认为最大的好处是 在实例时,只要初始化一次,而其他的客户端代码是不用变的。下面先来看个例子。。
modol层的实体类department部门
Department.java
department的接口,用类处理department的操作的接口
IDepartment.java
对department进行mysql操作的实现类。
MysqlDepartment.java
package com.jing.abstractFactory;
public class MysqlDepartment implements IDepartment{
@Override
public void insert(Department department) {
System.out.println("在mysql中进行插入");
}
@Override
public Department getDepartment(Integer id) {
System.out.println("在mysql 中进行查询");
return null;
}
}
对department进行sqlserver操作的实现类。
SqlServerDepartment.java
接着我们就开始定义抽象工厂了。。抽象工厂实现现在有两种,一种是mysql,一种是sqlserver。但是他们都有共同的操作创建department的操作类,因此抽象工厂诞生。
IFactory.java
接着就是实现接口的sqlserverFactory。
SqlServerFactory.java
然后是实现接口的mysqlServerFactory
MysqlFactory.java
main函数运行
至此抽象工厂完成。而如果说需求要求用mysql的时候,我们只需要修该factory实例的SqlserverFactory,其他的都不用改了。。
=================================附上 最近学习ssh的包结构设计。与抽象工厂的设计大同小异===================================
src
--com.jing.action---------这个包放置处理跳转的
--com.jing.common------这个包放置工厂的 实现ioc的工厂 资源的管理作用 sessionFactory
--com.jing.entity----------放置实体类
--com.jing.impDao--------接口 实体类操作
--com.jing.interDao--------实现实体类操作的 这里就是数据库操作了
抽象工厂模式个人认为最大的好处是 在实例时,只要初始化一次,而其他的客户端代码是不用变的。下面先来看个例子。。
modol层的实体类department部门
Department.java
package com.jing.abstractFactory; public class Department { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
department的接口,用类处理department的操作的接口
IDepartment.java
package com.jing.abstractFactory; public interface IDepartment { public void insert(Department department); public Department getDepartment(Integer id); }
对department进行mysql操作的实现类。
MysqlDepartment.java
package com.jing.abstractFactory;
public class MysqlDepartment implements IDepartment{
@Override
public void insert(Department department) {
System.out.println("在mysql中进行插入");
}
@Override
public Department getDepartment(Integer id) {
System.out.println("在mysql 中进行查询");
return null;
}
}
对department进行sqlserver操作的实现类。
SqlServerDepartment.java
package com.jing.abstractFactory; public class SqlServerDepartment implements IDepartment{ @Override public void insert(Department department) { System.out.println("在sqlserver 插入语句"); } @Override public Department getDepartment(Integer id) { System.out.println("在sqlserver中进行查询访问"); return null; } }
接着我们就开始定义抽象工厂了。。抽象工厂实现现在有两种,一种是mysql,一种是sqlserver。但是他们都有共同的操作创建department的操作类,因此抽象工厂诞生。
IFactory.java
package com.jing.abstractFactory; public interface IFactory { public IDepartment createDepartment(); }
接着就是实现接口的sqlserverFactory。
SqlServerFactory.java
package com.jing.abstractFactory; public class SqlServerFactory implements IFactory{ @Override public IDepartment createDepartment() { return new SqlServerDepartment(); } }
然后是实现接口的mysqlServerFactory
MysqlFactory.java
package com.jing.abstractFactory; public class MysqlFactory implements IFactory{ @Override public IDepartment createDepartment() { return new MysqlDepartment(); } }
main函数运行
package com.jing.abstract 4000 Factory; public class Main { public static void main(String[] args) { //IFactory factory = new MysqlFactory(); IFactory factory = new SqlServerFactory(); IDepartment department = factory.createDepartment(); department.insert(new Department()); department.getDepartment(1); } }
至此抽象工厂完成。而如果说需求要求用mysql的时候,我们只需要修该factory实例的SqlserverFactory,其他的都不用改了。。
=================================附上 最近学习ssh的包结构设计。与抽象工厂的设计大同小异===================================
src
--com.jing.action---------这个包放置处理跳转的
--com.jing.common------这个包放置工厂的 实现ioc的工厂 资源的管理作用 sessionFactory
--com.jing.entity----------放置实体类
--com.jing.impDao--------接口 实体类操作
--com.jing.interDao--------实现实体类操作的 这里就是数据库操作了
相关文章推荐
- springmvc之hibernate整合
- Struts2简单构建
- Javaworkers团队第一周项目总结
- Java我的高效编程之环境搭建
- java多态运行时实现
- Java并发-同步器Semaphore,CountDownLatch
- 软件一定存在修改的余地——《大话Java性能优化》
- Java大牛养成记(7)——后台权限拦截器
- spring aop笔记
- cookie、session和java过滤器
- Spring依赖注入及IOC控制反转
- java垃圾收集器
- Java编程思想[二]操作符
- [JAVA][RCP] Eclipse4/RCP/Lifecycle
- struts2学习笔记
- struts2学习笔记
- ant无法构建源码包含中文的项目--KeyWord:ant,中文,乱码
- JAVA中使用FTPClient实现文件上传下载
- SpringMVC学习笔记
- SpringMVC学习笔记