2

我试图了解适配器模式实现是否依赖于接口实现。根据我的阅读,当我需要将类的接口转换为客户期望的另一个接口时,我应该使用适配器。

有人告诉我 3 芯插头使用适配器连接到两芯插头的经典示例...

因此,据我了解,如果类中的某些方法具有具有特定参数签名的方法,并且我想用需要更多(或更少)参数的逻辑包装它,那么我应该实现适配器模式。

从我看到的所有示例中,正确的方法是创建一个适配器类,该类实现具有所需方法签名的接口,并将被收养者作为适配器类中的成员。然后,我可以通过实现的接口方法调用adpotee方法并输入逻辑。

问题是,如果我只需要使用一个收养类,为什么要使用接口?放弃接口位并仅将被收养者作为成员并以“独立”方法实现所需的逻辑不是更简单吗?

是否需要在这里实现接口方法才能使适配器模式有效?

public class PostStatusAdapter
{
    public interface IpostStatus 
    { 
        void Post(string i_Post, string i_Password);
    }

    public class UserAdapter : IpostStatus
    {
        User Adoptee = new User();

        void IpostStatus.Post(string i_Post, string i_Password)
        {
            if (PasswordCorrect(i_Password))
            {
                Adoptee.PostStatus(i_Post);
            }
        }

        private bool PasswordCorrect(string i_Password) { ... }
    }
}
4

1 回答 1

2

是的,如果它实现了“外部”接口或抽象 API,那么它本质上就是一个适配器——无论“内部”连接是形式化为接口还是抽象 API。

因此,当它挂钩到特定的内部实现时,它仍然是一个适配器,它可以履行/回答外部接口的契约和方法。

如果您在适配器本身内实现重要的逻辑,它可能不再是适配器——那么它可能会变成一个委托。

委托自己实现功能,尤其是通过委托给引用的对象。

于 2013-08-08T00:45:29.577 回答