您的位置:首页 > 编程语言 > Java开发

大话设计模式java版--抽象工厂模式

2016-05-15 21:30 471 查看
抽象工厂模式--提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。--------引用GOF

抽象工厂模式个人认为最大的好处是 在实例时,只要初始化一次,而其他的客户端代码是不用变的。下面先来看个例子。。

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--------实现实体类操作的 这里就是数据库操作了


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: