这些是我的.java类。我是否正确实施了适配器模式?实现适配器模式
接口播放
public interface Play {
public void Tune(String Type,String Guitar);
}
advanceTuning接口
public interface AdvanceTuning {
public void getSharp(String Guitar);
public void getLowKey(String Guitar);
}
lowkeytuning.java
public class LowKeyTuning implements AdvanceTuning{
@Override
public void getSharp(String Guitar) {
// TODO Auto-generated method stub
}
@Override
public void getLowKey(String Guitar) {
// TODO Auto-generated method stub
System.out.println(Guitar+": Guitar Tuned to LowKey");
}
}
Guitar.java
public class Guitar implements Play{
Adapter adapter;
@Override
public void Tune(String Type, String Guitar) {
// TODO Auto-generated method stub
if(Type.equalsIgnoreCase("Standard")){
System.out.println(Guitar+": Guitar Tuned to Standard");
}
else if(Type.equalsIgnoreCase("Sharp") || Type.equalsIgnoreCase("LowKey")){
adapter=new Adapter(Type);
adapter.Tune(Type, Guitar);
}
else{
System.out.println("No Such Tuning exists as "+Type);
}
}
}
Adapter.java
public class Adapter implements Play{
AdvanceTuning aTune;
public Adapter(String Type){
if(Type.equalsIgnoreCase("Sharp")){
aTune= new SharpTuning();
}
else if(Type.equalsIgnoreCase("LowKey")){
aTune= new LowKeyTuning();
}
}
@Override
public void Tune(String Type,String Guitar) {
// TODO Auto-generated method stub
if(Type.equalsIgnoreCase("Sharp")){
aTune.getSharp(Guitar);
}
else if(Type.equalsIgnoreCase("LowKey")){
aTune.getLowKey(Guitar);
}
}
}
SharpTuning.java是相同Lowkey.java
和我有它创建的对象的类client.java Guitar.java并调用它的方法Tune();
我会'AdvanceTuning'的实例作为参数传递给'Adapter'构造函数,而不是传递一个字符串和“解析”它。 – Thomas
通常使用适配器将一个接口转换为另一个接口(https://en.wikipedia.org/wiki/Adapter_pattern),实现的内容更像策略或修饰器模式。 – Thomas
@Thomas好吧谢谢我会试着将它作为参数传递给它。 –