设计模式之抽象工厂方法模式

定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类

结构图:


 示例代码:

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 MySqlUser implements IUser {

	@Override
	public void insert(User user) {
		// TODO Auto-generated method stub
		System.out.println("在mysql中给表user表添加一条记录!");
	}

	@Override
	public User getUser(int id) {
		// TODO Auto-generated method stub
		System.out.println("在mysql中根据ID得到user表一条记录");
		return null;
	}

}

public class OracleUser implements IUser{

	@Override
	public void insert(User user) {
		// TODO Auto-generated method stub
		System.out.println("在Oracle中给表user表添加一条记录!");
	}

	@Override
	public User getUser(int id) {
		// TODO Auto-generated method stub
		System.out.println("在Oracle中根据ID得到user表一条记录");
		return null;
	}

}
public class MySqlDepartment implements IDepartment{

	@Override
	public void insert(Department department) {
		// TODO Auto-generated method stub
		System.out.println("在mysql中给表department表添加一条记录!");
	}

	@Override
	public Department getDepartment(int id) {
		// TODO Auto-generated method stub
		System.out.println("在mysql中根据ID得到Department表一条记录");
		return null;
	}

}
public class OracleDepartment implements IDepartment {

	@Override
	public void insert(Department department) {
		// TODO Auto-generated method stub
		System.out.println("在Oracle中给表department表添加一条记录!");
	}

	@Override
	public Department getDepartment(int id) {
		// TODO Auto-generated method stub
		System.out.println("在Oracle中根据ID得到Department表一条记录");
		return null;
	}
}

public class MySqlFactory implements IFactory {

	@Override
	public IUser createUser() {
		// TODO Auto-generated method stub
		return new MySqlUser();
	}

	@Override
	public IDepartment createDepartment() {
		// TODO Auto-generated method stub
		return new MySqlDepartment();
	}


}
public class OracleFactory implements IFactory {

	@Override
	public IUser createUser() {
		// TODO Auto-generated method stub
		return new OracleUser();
	}

	@Override
	public IDepartment createDepartment() {
		// TODO Auto-generated method stub
		return new OracleDepartment();
	}

}
客户端代码如下所示:

public class Client {

	public static void main(String[] args) {
		IFactory mysqlFactory = new MySqlFactory();
		IFactory oracleFactory = new OracleFactory();

		IDepartment mysqlDepartment = mysqlFactory.createDepartment();
		IUser mysqlUser = mysqlFactory.createUser();
		
		mysqlDepartment.insert(null);
		mysqlDepartment.getDepartment(0);
		
		mysqlUser.insert(null);
		mysqlUser.getUser(0);

		IDepartment oracleDepartment = oracleFactory.createDepartment();
		IUser oracleUser = oracleFactory.createUser();
		
		oracleDepartment.insert(null);
		oracleDepartment.getDepartment(0);
		
		oracleUser.insert(null);
		oracleUser.getUser(0);

	}

}

运行结果如下:

在mysql中给表department表添加一条记录!
在mysql中根据ID得到Department表一条记录
在mysql中给表user表添加一条记录!
在mysql中根据ID得到user表一条记录
在Oracle中给表department表添加一条记录!
在Oracle中根据ID得到Department表一条记录
在Oracle中给表user表添加一条记录!
在Oracle中根据ID得到user表一条记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值