---
title: "Extrair Interface"
type: "refactoring-technique"
slug: "extract-interface"
url: "http://localhost:3000/pt-br/extract-interface.md"
category: "Dealing with Generalization"
description: "Problema: Vários clientes estão usando a mesma parte da interface de uma classe. Outro caso: parte da interface em duas classes é idêntica. Solução: Mova essa porção idêntica para sua própria interface."
---
# Extrair Interface

> Problema: Vários clientes estão usando a mesma parte da interface de uma classe. Outro caso: parte da interface em duas classes é idêntica. Solução: Mova essa porção idêntica para sua própria interface.

## Problem

Vários clientes estão usando a mesma parte da interface de uma classe. Outro caso: parte da interface em duas classes é idêntica.

## Solution

Mova essa porção idêntica para sua própria interface.

## Why Refactor

1. Interfaces são muito adequadas quando classes desempenham papéis especiais em diferentes situações. Use [Extrair Interface](/pt-br/extract-interface) para indicar explicitamente qual papel.
2. Outro caso conveniente surge quando você precisa descrever as operações que uma classe realiza em seu servidor. Se for planejado permitir, no futuro, o uso de servidores de múltiplos tipos, todos os servidores devem implementar a interface.

## How to Refactor

1. Crie uma interface vazia.
2. Declare as operações comuns na interface.
3. Declare as classes necessárias como implementadoras da interface.
4. Altere as declarações de tipo no código cliente para usar a nova interface.
## Relations

**Similar techniques**

- [Extrair Superclasse](/pt-br/extract-superclass.md)

