抽象工厂模式

抽象工厂模式就是补充工厂模式的升级,可以理解为需要有多个工厂的情况下

模拟场景:实现多种数据库的操作方式。

 

代碼:

package test;

public class AbstractFactory {
    public static void main(String[] args) {
        User user = new User();
        Order order = new Order();
        //IFactory factory = new MysqlFactory();
        IFactory factory = new OracleFactory();
        IUser iuser = factory.CreateUser();
        iuser.Insert(user);
        iuser.GetUser(1);

        IOrder iorder = factory.CreateOrder();
        iorder.Insert(order);
        iorder.GetOder(1);
    }

}

//IFactory  抽象工厂
interface IFactory {
    IUser CreateUser();
    IOrder CreateOrder();
}
//MysqlFactory
class MysqlFactory implements IFactory{
    @Override
    public IUser CreateUser() {
        return new MysqlServerUser();
    }

    @Override
    public IOrder CreateOrder() {
        return new MysqlServerOrder();
    }
}
//OracleFactory
class OracleFactory implements IFactory{
    @Override
    public IUser CreateUser() {
        return new OracleServerUser();

    }

    @Override
    public IOrder CreateOrder() {
        return new OracleServerOrder();
    }
}
//User 实体类
class User {
    Integer id;
    String name;
    Integer age;
}
//Iuser  user表的操作
interface IUser {
    void Insert(User user);
    void GetUser(Integer id);
}
//MysqlServerUser   user表的mysql操作类
class MysqlServerUser implements IUser {
    @Override
    public void Insert(User user) {
        System.out.println("mysql方式插入一条user数据");
    }

    @Override
    public void GetUser(Integer id) {
        System.out.println("mysql方式获取一条user数据");
    }
}

//OracleServerUser  user表的oracle操作类
class OracleServerUser implements IUser {
    @Override
    public void Insert(User user) {
        System.out.println("oracle方式插入一条user数据");
    }

    @Override
    public void GetUser(Integer id) {
        System.out.println("oracle方式获取一条user数据");
    }
}

class Order {
    Integer id;
    Integer userId;
    String orderSn;
}
//Iorder  order表的操作
interface IOrder {
    void Insert(Order order);
    void GetOder(Integer id);
}
//MysqlServerOrder   order表的mysql操作类
class MysqlServerOrder implements IOrder {
    @Override
    public void Insert(Order order) {
        System.out.println("mysql方式插入一条order数据");
    }

    @Override
    public void GetOder(Integer id) {
        System.out.println("mysql方式获取一条order数据");
    }
}
//OracleServerOrder  order表的oracle操作类
class OracleServerOrder implements IOrder {
    public void Insert(Order order) {
        System.out.println("oracle方式插入一条order数据");
    }

    @Override
    public void GetOder(Integer id) {
        System.out.println("oracle方式获取一条order数据");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值