设计模式之简单工厂、工厂方法和抽象工厂

以下内容主要参照《大话设计模式》以及一些自己的理解
1.简单工厂

特点:所有产品类实例由一个简单工厂生产,一旦增加新的产品类,需要修改简单工厂类(违背了开放-封闭原则),但是客户端不需要修改

2.工厂方法

特点:一个产品类实例由其对应的工厂类生产,增加一个新的产品类,只需要添加对应的工厂类,不需要修改代码,但是客户端代码需要修改

3.抽象工厂

特点:一个工厂可以生产多个产品类实例,例如华为工厂可以生产华为路由器、华为手机(华为路由器又属于路由器(下边还有思科路由器等),华为手机属于手机(下边还有小米手机等))
添加一个产品时,需要添加产品接口、具体产品类,修改工厂接口,修改或添加具体工厂类
适用于交换产品系列,例如在客户端修改IFactory   factory=new AccessFactory();
《大话设计模式》中给出一种方法改善:使用简单工厂结合反射机制改善抽象工厂

public class DataBase{
    private String db;
    
    public void setDb(String db){
        this.db=db;
    }
    
    public static IUser createUser(){
       Class clazz= Class.forName(db+"User");
       return clazz.newInstance().createUser();
    }
    
    public static Departepartment IDepartment(){
        Class clazz=Class.forName(db+"Department");
        return clazz.newInstance().createDepartment();
    }
}

public class Client{
    public static void main(String[] args){
        User user=new User();
        Department department=new Department();
        
        DataBase database=new DataBase();
        
        DataBase.setDb("SqlServer");
        
        IUser iu=DataBase.createUser();
        iu.insert(user);
        iu.getUser(1);
        
        IDepartment id=DataBase.createDepartment();
        id.insert(department);
        id.getDepartment(1);
    }
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值