首页 > 其他 > 详细

2、工厂模式

时间:2020-06-15 19:43:12      阅读:50      评论:0      收藏:0      [点我收藏+]

2、工厂模式

遵循的原则:

技术分享图片

1、简单工厂模式

其实我们最多用的还是简单工厂模式,不过他违反了开闭原则

技术分享图片

  • 类实现及类的结构

技术分享图片

总结:简单工厂模式,有一个工厂类提供静态方法根据多态的特性返回相应的实例对象!

2、工厂方法模式

优点:实现的开闭原则

但是代码太过冗余

技术分享图片

  • 类结构

技术分享图片

对比:

  • 代码复杂度: 高
  • 结构复杂度:高
  • 编程复杂度:高
  • 管理复杂度:高

所以我们在实际开发中一般选用简单工厂模式!

3、抽象工厂模式

工厂的工厂叫抽象工厂模式!

有产品族的概念:

手机和路由器有不同的厂家制造,不同的厂家有不同的工厂实现

抽象工厂接口 根据不同实现出不同的工厂,工厂生产不同产品族的产品!

技术分享图片

  • 抽象工厂,定义工厂需要生产的东西
package _02factory.abstract1;

/**
 * @author zhangbingbing
 * @version 1.0
 * @date 2020/6/14 23:32
 */
public interface AbstractFactory {
    //生产手机
    Phone createPhone();

    //生产路由器
    Router createRouter();

    //笔记本
    Laptop createLaptop();
}
  • 华为工厂:专门生产华为产品族的东西
package _02factory.abstract1;

/**
 * @author zhangbingbing
 * @version 1.0
 * @date 2020/6/14 23:34
 */

//华为工厂
public class HuaweiFactory implements AbstractFactory {
    @Override
    public Phone createPhone() {
        return new Huawei();	//华为手机
    }

    @Override
    public Router createRouter() {
        return new HuaweiRouter();	//华为路由器
    }

    @Override
    public Laptop createLaptop() {
        //全改
        return new  HuaweiLaptop();		//华为笔记本
    }
}
  • 客户根据不同工厂获取不同产品族的产品
package _02factory.abstract1;

/**
 * @author zhangbingbing
 * @version 1.0
 * @date 2020/6/14 23:34
 */
public class Client {
    public static void main(String[] args) {
        System.out.println("=================苹果系列产品==========");
        AbstractFactory factory = new AppleFactory();
        Phone phone = factory.createPhone();
        Router router = factory.createRouter();
        phone.sing();
        router.wifi();
        System.out.println("=================华为系列产品==========");
        AbstractFactory factory2 = new HuaweiFactory();
        phone = factory2.createPhone();
        router = factory2.createRouter();
        phone.sing();
        router.wifi();
    }
}

总结

  1. 违反了开闭原则,牵一发动全身,所以我们一般用于稳定的类的构建!
  2. 应用条件:当我们不需要关心对象的具体实现,可以让工厂给我们生产!

2、工厂模式

原文:https://www.cnblogs.com/bingstudy/p/13134445.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!