标签:未命名 turn factory mysq strong serve mbg 工厂模式 tor
1、概述
抽象工厂模式是一种创建型模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。
2、模式结构
3、使用场景
4、优缺点
优点:
缺点:
5、实例
项目中可能会遇到需要多种数据库来操作数据,例如,mysql和sqlserver数据库,这样需要访问数据和业务逻辑解耦。
首先创建两个实体Book和User
public class Book {
private int bookId;
private String bookName;
public Book(int bookId,String bookName){
this.bookId=bookId;
this.bookName=bookName;
}
public int getBookId() {
return bookId;
}
public String getBookName() {
return bookName;
}
}
public class User {
private int userId;
private String userName;
public User(int userId, String userName) {
this.userId = userId;
this.userName = userName;
}
public int getUserId() {
return userId;
}
public String getUserName() {
return userName;
}
}
其次,创建两个抽象产品IBook和IUser
public interface IBook {
int add(Book book);
int remove(int bookId);
}
public interface IUser {
int add(User user);
int remove(int userId);
}
根据数据库实现不同的产品
public class SqlServerBook implements IBook {
@Override
public int add(Book book) {
return 0;
}
@Override
public int remove(int bookId) {
return 0;
}
}
public class MySqlBook implements IBook {
@Override
public int add(Book book) {
// 具体的mysql数据库操作
return 0;
}
@Override
public int remove(int bookId) {
return 0;
}
}
public class MySqlUser implements IUser {
@Override
public int add(User user) {
return 0;
}
@Override
public int remove(int userId) {
return 0;
}
}
public class SqlServerUser implements IUser {
@Override
public int add(User user) {
// 具体的sqlServer数据库操作
return 0;
}
@Override
public int remove(int userId) {
return 0;
}
}
定义一个访问数据库的抽象工厂接口
public interface IFactory {
IBook addBook();
IUser addUser();
}
创建两个具体工厂SqlServerFactory和MySqlFactory
public class MySqlFactory implements IFactory {
@Override
public IBook addBook() {
return new MySqlBook();
}
@Override
public IUser addUser() {
return new MySqlUser();
}
}
public class SqlServerFactory implements IFactory {
@Override
public IBook addBook() {
return new SqlServerBook();
}
@Override
public IUser addUser() {
return new SqlServerUser();
}
}
客户端代码:
public static void main(String[] args) {
User user = new User(1, "test");
IFactory factory = new SqlServerFactory();// 可以换成MySqlFactory
IUser iu = factory.addUser();
iu.add(user);
}
标签:未命名 turn factory mysq strong serve mbg 工厂模式 tor
原文地址:https://www.cnblogs.com/fomin/p/9781128.html