gpt4 book ai didi

java - 适配器和装饰器的区别

转载 作者:行者123 更新时间:2023-11-30 03:21:08 26 4
gpt4 key购买 nike

我正在学习设计模式,现在我试图理解适配器和装饰器之间的区别。考虑列表中的以下装饰器:

Collections.synchronizedList(List<T> lst)

在指定的List上创建一个同步装饰器。反过来,适配器模式也将其封装起来,如所述 here 。示例:

public interface Chief {

public Object makeBreakfast();
public Object makeDinner();
public Object makeSupper();

}

public class Plumber {

public Object getPipe(){
return new Object();
}

public Object getKey(){
return new Object();
}

public Object getScrewDriver(){
return new Object();
}

}

public class ChiefAdapter implements Chief{

private Plumber plumber = new Plumber();

@Override
public Object makeBreakfast() {
return plumber.getKey();
}

@Override
public Object makeDinner() {
return plumber.getScrewDriver();
}

@Override
public Object makeSupper() {
return plumber.getPipe();
}

}

没有人能解释一下其中的区别吗?

最佳答案

装饰器模式主要用于为类承担/引入额外的责任。例如,您可以采用对象序列的类容器并实现迭代器来赋予额外的责任,能够在类内迭代该集合。

戈夫

attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.

另一方面,适配器将一个类转换为另一个职责,如您所显示的示例中,适配器将水管工转换为厨师。

戈夫

convert the interface of a class into another interface clients expect. Adapater lets classes work together that couldn't otherwise because of incompatible interfaces.

关于java - 适配器和装饰器的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31312711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com