抽象工厂模式

定义:抽象工厂模式和工厂模式非常像,从定义出发,提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。(就像下面的实例一样,只有一个user类的时候其实就是工厂模式,但如果增加了department的时候,也就是多个产品,那么这就是抽象工厂模式)。

实体类:

public class User {
}
public class Department {
}

抽象产品类

public interface IUser {
    void Insert(User user);

    User getUser(int id);
}
public interface IDepartment {
    void Insert(Department department);

    Department getDepartment(int id);
}

抽象产品类的实现

复制代码
public class SqlserverUser implements IUser {
    @Override
    public void Insert(User user) {
        System.out.println("在SQL server中给User插入一个数据");
    }

    @Override
    public User getUser(int id) {
        System.out.println("在SQL server中的user得到一条数据");
        return null;
    }
}
复制代码
复制代码
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中的Department得到一条数据");
        return null;
    }
}
复制代码
复制代码
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中User得到一条数据");
        return null;
    }
}
复制代码
复制代码
public class AccessDepartment implements IDepartment {
    @Override
    public void Insert(Department department) {
        System.out.println("在Access中的Department插入一个数据");
    }

    @Override
    public Department getDepartment(int id) {
        System.out.println("在Access中Department得到一条数据");
        return null;
    }
}
复制代码

抽象工厂类

public interface IFactory {
    IUser createUser();

    IDepartment createDepartment();
}

抽象工厂类的实现

复制代码
public class SqlServerFactory implements IFactory {
    @Override
    public IUser createUser() {
        return new SqlserverUser();
    }

    @Override
    public IDepartment createDepartment() {
        return new AccessDepartment();
    }
}
复制代码
复制代码
public class AccessFactory implements IFactory {
    @Override
    public IUser createUser() {
        return new AccessUser();
    }

    @Override
    public IDepartment createDepartment() {
        return new AccessDepartment();
    }
}
复制代码

Main:

复制代码
public class Main {
    public static void main(String[] args) {
        User user = new User();
        Department department = new Department();

        IFactory factory = new SqlServerFactory();//IFactory factory = new AccessFactory()
        IUser iUser = factory.createUser();

        //然后可以进行数据的操作
    }
}
复制代码

 

posted @   WXY_WXY  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示