抽象工厂模式
博客专区 > 清尘V 的博客 > 博客详情
抽象工厂模式
清尘V 发表于2年前
抽象工厂模式
  • 发表于 2年前
  • 阅读 25
  • 收藏 0
  • 点赞 1
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 相对于普通工厂模式,如果宝马新出一种车型,只需要新建一个宝马工厂即可,不会影响其他工厂接口和车型接口,有利于扩展

定义宝马接口:

package com.whereta.abstractfactory;

/**
 * Vincent 创建于 2016/4/15.
 * 宝马接口:定义宝马车的类型
 */
public interface IBMW {
    void setType();
}

定义宝马车型具体实现类:

package com.whereta.abstractfactory;

/**
 * Vincent 创建于 2016/4/15.
 */
public class BMWX5 implements IBMW {
    public void setType() {
        System.out.println("我是宝马X5");
    }
}
package com.whereta.abstractfactory;

/**
 * Vincent 创建于 2016/4/15.
 */
public class BMWX6 implements IBMW {
    public void setType() {
        System.out.println("我是宝马X6");
    }
}

定义工厂接口:

package com.whereta.abstractfactory;

/**
 * Vincent 创建于 2016/4/15.
 * 宝马工厂接口:定义生成某个型号的宝马的工厂
 */
public interface IBMWFactory {
    IBMW produce();
}

定义工厂实现类:

package com.whereta.abstractfactory;

/**
 * Vincent 创建于 2016/4/15.
 */
public class BMWX5Factory implements IBMWFactory {
    public IBMW produce() {
        System.out.println("我生产BMWX5");
        return new BMWX5();
    }
}
package com.whereta.abstractfactory;

/**
 * Vincent 创建于 2016/4/15.
 */
public class BMWX6Factory implements IBMWFactory {
    public IBMW produce() {
        System.out.println("我生产BMWX6");
        return new BMWX6();
    }
}

测试

package com.whereta.abstractfactory;

/**
 * Vincent 创建于 2016/4/15.
 * 抽象工厂模式:相对于普通工厂模式,如果宝马新出一种车型,只需要新建一个宝马工厂即可,不会影响其他工厂接口和车型接口,有利于扩展
 */
public class Main {
    public static void main(String[] args) {
        IBMWFactory bmwx5Factory=new BMWX5Factory();
        IBMW ibmw = bmwx5Factory.produce();
        ibmw.setType();
    }
}

输出结果:

Connected to the target VM, address: '127.0.0.1:52651', transport: 'socket'
我生产BMWX5
我是宝马X5
Disconnected from the target VM, address: '127.0.0.1:52651', transport: 'socket'

Process finished with exit code 0


个人博客:http://www.whereta.com

共有 人打赏支持
粉丝 44
博文 107
码字总数 47780
×
清尘V
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: