抽象工厂模式--简单的看法和使用

定义
抽象工厂模式又称Kit模式,是对工厂方法模式的一个升级,它提供了一个创建一系列或相关相互依赖对象的接口,而无需指定它们的具体的类。而它与工厂方法模式的区别是,工厂方法模式只是围绕一个产品来说,而抽象工厂模式是针对多个产品,也就是少和多的区别。

结构
Factory:抽象工厂。声明生成抽象产品的方法。
ConcreteFactory:具体工厂。定义生成抽象产品的具体方法,生成一个具体的产品。
Product:抽象产品:为一种产品声明接口。
ConcreteProduct:具体产品。定义具体工厂生成的具体产品对象,实现抽象产品接口。

情形
家兴用工厂方法模式去实现项目经理的要求,项目经理很满意;继续交一个任务给家兴:由于公司最近发展得非常不错,公司资金非常充足,为了改善公司的数据库系统,公司将原来的数据库的mysql的连接方式改db2的连接方式,由于mysql和oracle其中有写sql并不一样;家兴想了想,在想不新增加的代码不能违背开闭原则,接口隔离原则,单一职责原则等等,不能再改接口ShotTechnology,使得这一接口变得复杂,功能变得复杂。于是家兴用抽象工厂模式。

抽象工厂模式的XML图
这里写图片描述
代码

//接口
public interface Mind {
    ShotMysql getShotMysql();
    ShotOracle getShotOracle();
}

public interface ShotMysql{
    public void method();
}

public interface ShotOracle{
    public void method();
}
//具体工厂
public class DryPickMind implements Mind {

    /* (non-Javadoc)
     * @see com.yatming.model.abstartFactory#getDryPickMysql()
     */
    @Override
    public ShotMysql getDryPickMysql() {
        // TODO Auto-generated method stub
        return new DryPickMysql();
    }

    /* (non-Javadoc)
     * @see com.yatming.model.abstartFactory#getDryPickOracle()
     */
    @Override
    public ShotOracle getDryPickOracle() {
        // TODO Auto-generated method stub
        return new DryPickOracle();
    }
}

public class ScramMind implements Mind {

    /* (non-Javadoc)
     * @see com.yatming.model.abstartFactory#getScramMysql()
     */
    @Override
    public ShotMysql getScramMysql() {
        // TODO Auto-generated method stub
        return new ScramMysql();
    }

    /* (non-Javadoc)
     * @see com.yatming.model.abstartFactory#getScramOracle()
     */
    @Override
    public ShotOracle getScramOracle () {
        // TODO Auto-generated method stub
        return new ScramOracle ();
    }
}
//实现ShotMysql接口
public class DryPickMysql implements ShotMysql{
    public void method() {
        // TODO Auto-generated method stub
        System.out.println("我家兴要用mysql式的干拔了,看招");
    }
}

public class ScramMysql implements ShotMysql{
    public void method() {
        // TODO Auto-generated method stub
        System.out.println("我家兴要用mysql式的急停了,看招");
    }
}
//实现ShotOracle接口
public class DryPickOracle implements ShotOracle{
    public void method() {
        // TODO Auto-generated method stub
        System.out.println("我家兴要用oracle式的干拔了,看招");
    }
}

public class ScramOracle implements ShotOracle{
    public void method() {
        // TODO Auto-generated method stub
        System.out.println("我家兴要用oracle式的急停了,看招");
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值