Адаптер здесь не совсем подходящий инструмент.Он разработан для того, чтобы два несовместимых интерфейса могли общаться, адаптируя один к другому.В этом случае вы хотите предоставить некоторое подмножество функций по-разному в зависимости от конечного пользователя.В этом случае вы хотите использовать фасад .
class Fat{
public string A();
public int B();
.
public void EatMeat()
.
public void Z();
}
class JennyCraig{
private Fat f = Fat();
public string A(){
return f.A();
}
public void Z(){
return f.Z();
}
class Atkins{
public Fat f = Fat();
public void EatMeat(){
return f.EatMeat();
}
}