Java中封装共用的接口可以通过创建接口和实现类来实现。接口可以定义一组抽象方法,而实现类则实现这些接口中的方法。这样可以实现代码的重用和解耦,使得系统更加灵活和可扩展。

下面我们以一个简单的例子来说明如何封装共用的接口。

假设我们有一个电子商务系统,其中有一个购物车模块,我们想要封装一个通用的接口来实现购物车的功能。

首先,我们创建一个接口ShoppingCart,并定义一组抽象方法,如下所示:

public interface ShoppingCart {
    void addItem(Item item);
    void removeItem(Item item);
    float calculateTotal();
}

接口ShoppingCart中定义了三个抽象方法:addItem用于向购物车中添加商品,removeItem用于从购物车中移除商品,calculateTotal用于计算购物车中商品的总价。

接下来,我们创建一个实现类ShoppingCartImpl来实现这个接口,如下所示:

public class ShoppingCartImpl implements ShoppingCart {
    private List<Item> items;
    
    public ShoppingCartImpl() {
        items = new ArrayList<>();
    }
    
    @Override
    public void addItem(Item item) {
        items.add(item);
    }
    
    @Override
    public void removeItem(Item item) {
        items.remove(item);
    }
    
    @Override
    public float calculateTotal() {
        float total = 0;
        for (Item item : items) {
            total += item.getPrice();
        }
        return total;
    }
}

实现类ShoppingCartImpl中实现了接口ShoppingCart中定义的三个方法。在实现类中,我们使用一个ArrayList来存储购物车中的商品,然后根据具体需求实现接口中的方法。

接口和实现类定义完成后,我们可以在其他类中使用封装的购物车接口。下面是一个使用示例:

public class ShoppingCartClient {
    public static void main(String[] args) {
        ShoppingCart cart = new ShoppingCartImpl();
        
        Item item1 = new Item("iPhone", 999.99f);
        Item item2 = new Item("iPad", 599.99f);
        
        cart.addItem(item1);
        cart.addItem(item2);
        
        float total = cart.calculateTotal();
        
        System.out.println("Total price: " + total);
    }
}

在示例中,我们创建了一个购物车对象cart,然后向购物车中添加了两个商品item1item2,最后计算购物车中商品的总价并输出。

以上就是封装共用的接口的一个简单示例。通过创建接口和实现类,我们可以将通用的功能封装起来,以便在其他地方重复使用。接口和实现类的使用可以提高代码的可读性和可维护性,并且可以方便地进行功能扩展和修改。

接下来,我们使用序列图来描述接口和实现类之间的交互过程。

sequenceDiagram
    participant Client
    participant ShoppingCartImpl
    Client->>ShoppingCartImpl: addItem(item1)
    ShoppingCartImpl->>ShoppingCartImpl: add item to items list
    Client->>ShoppingCartImpl: addItem(item2)
    ShoppingCartImpl->>ShoppingCartImpl: add item to items list
    Client->>ShoppingCartImpl: calculateTotal()
    ShoppingCartImpl->>ShoppingCartImpl: iterate over items
    ShoppingCartImpl->>ShoppingCartImpl: calculate total price
    ShoppingCartImpl->>Client: return total price
    Client->>Client: print total price

以上序列图展示了客户端和购物车实现类之间的交互过程。客户端通过调用购物车实现类的方法来完成购物车的功能,并最终获得购物车中商品的总价。

最后,我们使用类图来表示接口和实现类的关系。

classDiagram
    interface ShoppingCart {
        +addItem(item: Item): void
        +removeItem(item: Item): void
        +calculateTotal(): float
    }
    
    class ShoppingCartImpl {
        -items: List<Item>
        +ShoppingCartImpl()
        +addItem(item: Item): void
        +removeItem(item: Item): void
        +calculateTotal(): float
    }
    
    class Item {
        -name: String
        -price: float
        +Item(name: String, price: float