美文网首页
工厂模式

工厂模式

作者: 村东头老骥 | 来源:发表于2019-10-27 17:45 被阅读0次

工厂模式

概念 : 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子类当中.满足了创建模式中所要求的"创建与使用相分离"的特点

三种实现分类

  • 简单工厂模式
  • 工厂模式
  • 抽象工厂模式

基本创建方式(不使用工厂模式)

代码实现

定义Phone的接口

package FactoryDemo.Simplefactory;

/**
 * 定义实现手机接口
 */
public interface Phone {

    /**
     * 定义手机的功能方法
     */
    public void call();
}

定义不同手机的实现类

## Huawei
package FactoryDemo.Simplefactory;

public class Huawei implements Phone {
    @Override
    public void call() {
        System.out.println("我正在使用华为手机");
    }
}
## Vivo
package FactoryDemo.Simplefactory;

public class Vivo implements Phone {

    @Override
    public void call() {
        System.out.println("我正在使用Vivo手机...");
    }
}

创建实现类

package FactoryDemo.Simplefactory;


/**
 * 当我们不使用工厂模式的时候进行调用
 *      需要对接口类,以及实现类的方法和参数了解,增加了创建对象的复杂和繁琐.
 *      如果当有多个调用者调用Huawei类和vivo类的过程中此时被调用类的实现发生了改变(增加了新的成员)
 *      则需要对所有的类new Huawei()/new Huawei()创建过程中进行改变.增加了功能扩展的代码量和繁琐
 */
public class Consumer {
    public static void main(String[] args) {
        Huawei huawei = new Huawei();  // 创建华为手机对象
        Vivo vivo = new Vivo();        // 创建vivo手机对象

        huawei.call();  // 调用接口方法
        vivo.call();
    }
}

简单工厂模式

概念 : 专门定义一个类创建其他类的实例,被创建实例的类型可能是接口,抽象类,也可以是具体类,实例化对象的时候不在使用new Object() 的形式,可以根据用户的需要创建相关的实例化对象.去除了调用者的创建类实例的依赖.

两种创建简单工厂的实现类

## 方式一
package FactoryDemo.Simplefactory;

/**
 * 简单工厂模式创建对象
 */
public class PhoneFactory {
    /**
     * 调用者根据需要调用自己所需要的实现类
     */
    public static Phone getPhoneObject(String type){
        if("华为".equals(type)){
            return new Huawei();
        }else if("vivo".equals(type)){
            return new Vivo();
        } else {
            return null;
        }
    }
}

## 方式二
package FactoryDemo.Simplefactory;

/**
 * 简单工厂模式创建对象
 */
public class PhoneFactory2 {

    public static Huawei createHuawei() {
        return new Huawei();
    }

    public static Vivo createVivo() {
        return new Vivo();
    }
}

实现类的简单工厂模式创建

package FactoryDemo.Simplefactory;

public class Consumer2 {

    public static void main(String[] args) {
        // 不同的方式创建对象
        Phone huawei = PhoneFactory.getPhoneObject("华为");
        Phone vivo = PhoneFactory2.createVivo();
        // 调用方法测试
        huawei.call();
        vivo.call();
    }
}

工厂模式

概念 : 工厂方法模式是对简单工厂模式进一步的解耦,因为在工厂方法模式中一个子类对应一个工厂类,而这些工厂类都是实现与一个抽象接口.这相当于是把原本会因为业务代码而庞大的简单工厂类,拆分成了一个个的工厂类,这样代码就不会耦合在一个类中.

创建Phone和PhoneFactory

package FactoryDemo.FactoryMethod;

/**
 * 定义实现手机接口
 */
public interface Phone {

    /**
     * 定义手机的功能方法
     */
    public void call();
}
## PhoneFactory
package FactoryDemo.FactoryMethod;

public interface PhoneFactory {
    // 创建手机工厂代加工类,让各个手机的工厂实现该方法
    Phone createPhone();
}

工厂方式实现类

package FactoryDemo.FactoryMethod;

public class Huawei implements Phone 
    // 实现手机接口类
    @Override
    public void call() {
        System.out.println("我是工厂模式创建的华为手机...");
    }
}

package FactoryDemo.FactoryMethod;
// 注意实现PhoneFactory的create的方式实现类
public class HuaweiFactory implements PhoneFactory {

    @Override
    public Phone createPhone() {
        return new Huawei();
    }
}

抽象工厂模式

待更新...

相关文章

  • 常用设计模式

    设计模式 工厂模式 工厂模式思路上分:简单工厂模式,工厂模式, 抽象工厂模式// 抽象工厂模式可以代替工厂模式,做...

  • 工厂模式

    工厂模式细分三种:简单工厂模式、工厂模式、抽象工厂模式。 工厂模式相当于抽象了简单工厂模式的工厂类,而抽象工厂模式...

  • 工厂模式

    工厂模式 就是工厂---生产-->产品 在设计模式中,分为 简单工厂模式, 工厂方法模式,抽象工厂模式. 工厂模式...

  • 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

    找女朋友之简单工厂模式,工厂模式,抽象工厂模式 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

  • 【设计模式】- 工厂模式

    工厂模式分为三种:简单工厂模式、工厂方法模式和抽象工厂模式。 工厂模式:靠工厂生产对象 简单工厂模式中只有一个工厂...

  • 工厂模式

    工厂模式包含三种模式:简单工厂模式、工厂方法模式和抽象工厂模式。 简单工厂模式 定义简单工厂模式:由一个工厂类根据...

  • Java设计模式——工厂模式

    工厂模式简单工厂模式工厂方法模式抽象工厂模式 1.简单工厂模式 1.基本介绍1)简单工厂模式也叫静态工厂模式,是属...

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

  • 第一章2.0工厂- 基础类准备

    2.1工厂-简单工厂模式2.2工厂-工厂方法模式2.3工厂-抽象工厂模式

网友评论

      本文标题:工厂模式

      本文链接:https://www.haomeiwen.com/subject/gfipvctx.html