大话设计模式-抽象工厂模式(大鸟和小菜Java版)
Posted 香风智乃哈~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大话设计模式-抽象工厂模式(大鸟和小菜Java版)相关的知识,希望对你有一定的参考价值。
注:本文只是把书上的c++代码,变成使用Java来进行实现,相当于自己的学习笔记
抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
写的是抽象工厂模式的数据访问的那部分代码。
如下:
package 设计模式.抽象工厂模式;
//创建一个User类
public class User {
private int id;
private String name;
//set和get方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package 设计模式.抽象工厂模式;
//Department类
public class Department {
private int id;
private String name;
// set和get方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package 设计模式.抽象工厂模式;
//IUser接口
public interface IUser {
void insert(User user);
User getUser(int id);
}
package 设计模式.抽象工厂模式;
//IDepartment接口
public interface IDepartment {
void insert(Department department);
Department getDepartment(int id);
}
package 设计模式.抽象工厂模式;
//SqlServerUser类
public class SqlServerUser implements IUser{
public void insert(User user){
System.out.println("在SQL Server中给User表增加一条记录");
}
public User getUser(int id){
System.out.println("在SQL Server中根据ID得到User表的一条记录");
return null;
}
}
package 设计模式.抽象工厂模式;
//SqlServerDepartment类,实现IDepartment接口
public class SqlServerDepartment implements IDepartment{
@Override
public void insert(Department department) {
System.out.println("在SQL Server中给Department表增加一条记录");
}
@Override
public Department getDepartment(int id) {
System.out.println("在 SQL Server中根据ID得到Department表一条记录");
return null;
}
}
package 设计模式.抽象工厂模式;
//IFactory接口
public interface IFactory {
IUser createUser();
IDepartment createDepartment();
}
package 设计模式.抽象工厂模式;
//sqlServerfactory类实现了IFactory接口
public class SqlServerFactory implements IFactory{
@Override
public IUser createUser() {
return new SqlServerUser();
}
@Override
public IDepartment createDepartment() {
return new SqlServerDepartment();
}
}
接下来是对Access的代码
package 设计模式.抽象工厂模式;
//AccessUser实现Iuser
public class AccessUser implements IUser{
@Override
public void insert(User user) {
System.out.println("在Access中给User表增加一条记录");
}
@Override
public User getUser(int id) {
System.out.println("在Access中根据ID得到User表一条记录");
return null;
}
}
package 设计模式.抽象工厂模式;
//该类实现了IDepartment接口
public class AccessDepartment implements IDepartment{
@Override
public void insert(Department department) {
System.out.println("在Access中给Deaprtment表增加一条记录");
}
@Override
public Department getDepartment(int id) {
System.out.println("在Access中根据ID得到Deaprtment表一条记录");
return null;
}
}
package 设计模式.抽象工厂模式;
//该类实现了IFactory接口
public class AccessFactory implements IFactory{
@Override
public IUser createUser() {
return new AccessUser();
}
@Override
public IDepartment createDepartment() {
return new AccessDepartment();
}
}
最后是一个测试主类
package 设计模式.抽象工厂模式;
//测试主类,分别对不同的数据库进行调用
public class Test {
public static void main(String[] args) {
User user = new User();
Department department = new Department();
IFactory factory = new AccessFactory();
IUser iu = factory.createUser();
iu.insert(user);
iu.getUser(1);
IDepartment id = factory.createDepartment();
id.insert(department);
id.getDepartment(1);
}
}
附上输出结合
以上就是抽象工厂模式的Java代码实现啦
参考大佬的文章:[https://blog.csdn.net/MONKEY_D_MENG/article/details/5707076]
以上是关于大话设计模式-抽象工厂模式(大鸟和小菜Java版)的主要内容,如果未能解决你的问题,请参考以下文章