《大话设计模式》java实现之抽象工厂模式

来源:互联网 发布:java在线直播源码 编辑:程序博客网 时间:2024/05/21 03:56

如前面所说,抽象工厂模式是针对产品族概念,一个factory对应多个产品的情况
UML图
这里写图片描述
代码结构
这里写图片描述

public class AccessDepartment implements IDepartment {    @Override    public void insert(Departmen departmen) {        System.out.println("在Access中给Department表增加一条记录");    }}
public class AccessFactory implements IFactory {    @Override    public IUser createUser() {        return new AccessUser();    }    @Override    public IDepartment createDepartment() {        return new AccessDepartment();    }}
public class AccessUser implements IUser {    @Override    public void insert(User user) {        System.out.println("在Access中给User表增加一条记录");    }}
public class Client {    public static void main(String[] args) {        User user = new User();        Departmen departmen = new Departmen();        //IFactory factory = new SqlServerFactory();        IFactory factory = new AccessFactory();        IUser iUser = factory.createUser();        iUser.insert(user);        IDepartment iDepartment = factory.createDepartment();        iDepartment.insert(departmen);    }}
public class Departmen {    private int id;    private String deptName;}
public interface IDepartment {    void insert(Departmen departmen);}
public interface IFactory {    IUser createUser();    IDepartment createDepartment();}
public interface IUser {    void insert(User user);}
public class SqlServerDepartment implements IDepartment {    @Override    public void insert(Departmen departmen) {        System.out.println("在SQL Server中给Department表增加一条记录");    }}
public class SqlServerFactory implements IFactory {    @Override    public IUser createUser() {        return new SqlServerUser();    }    @Override    public IDepartment createDepartment() {        return new SqlServerDepartment();    }}
public class SqlServerUser implements IUser {    @Override    public void insert(User user) {        System.out.println("在SQL Server中给User表增加一条记录");    }}
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;    }}

运行结果
这里写图片描述

阅读全文
0 0
原创粉丝点击