设计模式——抽象工厂模式(java实现)

本文通过一个实例展示了如何使用抽象工厂模式在数据库从SQL Server切换到Access时减少代码改动。介绍了IUser接口、SqlserverUser与AccessUser类、Ifactory接口、SqlserverFactory与AccessFactory类的实现,并讨论了抽象工厂模式的优势,如易于交换产品和分离客户端与创建实例的过程。同时,文章提及了当需要增加新表时,简单工厂模式配合反射技术可以进一步降低耦合。
摘要由CSDN通过智能技术生成

情景:
项目原先是基于sql server数据库,后来要改为access数据库,需要的改动很多。

最基本的数据访问程序,实现新增用户和得到用户
用户类:

package abstractfactory;

public class User {
   
    private int id;
    private String name;
    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;
    }
}

sqlserveruser类,用于操作user类:

package abstractfactory;
public class SqlserverUser {
   
    public void Insert(User user){
   
        System.out.println("增加user");
    }
    public User GetUser(int id){
   
        System.out.println("根据id得到user");
        return null;
    }
}

客户端代码:

package abstractfactory;
public class Main {
   
    public static void main(String[] args) {
   
        User user = new User();
        SqlserverUser su = new SqlserverUser();
        su.Insert(user);
        su.GetUser(1);
    }
}

这里SqlserverUser su = new SqlserverUser(); 使得su这个对象被框在sql server上了,如果是多态的,那么执行 su.Insert(user)和 su.GetUser(1)就可以不用考虑数据库

用工厂方法模式的数据访问程序:
在这里插入图片描述
Iuser接口:

package abstractfactory2;
public interface IUser {
   
    public void Insert(User user);
    public User GetUser(int id);
}

sqlserverUser类:访问sql server的user

package abstractfactory2;
public class SqlserverUser implements IUser {
   
    @Override
    public void Insert(User user) {
   
        System.out.println("增加一条user记录"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值