Код для интерфейса. Не реализация не имеет отношения к Java, а также к конструкции интерфейса.
Эта концепция была выведена в известность в книгах «Шаблоны / Банды четырех», но, скорее всего, была вокруг нее задолго до этого. Концепция, безусловно, существовала задолго до того, как существовала Java.
Конструкция интерфейса Java была создана для помощи в этой идее (среди прочего), и люди стали слишком сосредоточены на конструкции как центр смысла, а не оригинальное намерение. Тем не менее, это причина, по которой у нас есть общедоступные и частные методы и атрибуты в Java, C ++, C # и т. Д.
Это означает просто взаимодействовать с открытым интерфейсом объекта или системы. Не беспокойтесь и даже не ожидайте, как он делает то, что он делает внутренне. Не беспокойтесь о том, как это реализовано. В объектно-ориентированном коде, поэтому мы имеем общедоступные и частные методы / атрибуты. Мы намерены использовать общедоступные методы, потому что частные методы существуют только для внутреннего использования внутри класса. Они составляют реализацию класса и могут быть изменены по мере необходимости без изменения открытого интерфейса. Предположим, что в отношении функциональности метод класса будет выполнять ту же операцию с тем же ожидаемым результатом каждый раз, когда вы вызываете его с теми же параметрами. Это позволяет автору изменять способ работы класса, его реализацию, не нарушая взаимодействия с ним.
И вы можете запрограммировать интерфейс, а не реализацию, не используя конструкцию интерфейса. Вы можете запрограммировать интерфейс, а не реализацию на C ++, которая не имеет конструкцию интерфейса. Вы можете интегрировать две огромные корпоративные системы гораздо надежнее, если они взаимодействуют через публичные интерфейсы (контракты), а не вызывают методы для объектов, внутренних для систем. Ожидается, что интерфейсы всегда будут реагировать на один и тот же ожидаемый путь с учетом тех же входных параметров; если реализован интерфейс, а не реализация. Концепция работает во многих местах.
Встряхните мысль о том, что Java-интерфейсы имеют что-то, что связано с концепцией «Программа для интерфейса, а не реализация». Они могут помочь применить концепцию, но это не концепция.
В FAQ для R - вам нужно print()
вокруг функции решетки, которую вы вызываете:
7.22 Почему решетка / решетка не работает ?
Наиболее вероятная причина заключается в том, что вы забыли указать R для отображения графика. Решетчатые функции, такие как xyplot (), создают объект графика, но не отображают его (то же самое относится к графике ggplot2 и графике Trellis в S-Plus). Метод print () для объекта графика создает фактический дисплей. Когда вы используете эти функции интерактивно в командной строке, результат автоматически печатается, но в источнике () или внутри ваших собственных функций вам понадобится явный оператор print ().
blockquote>
Пример случая
visualise.r
вызывает plot2this.r
вызовы ggplot2
и возвращает p
объект Здесь исправление в функции plot2this.r
с return(p)
до return(print(p))
.
Начальный plot2this.r
p <- ggplot(dat.m, aes(x = Vars, y = value, fill=variable))
return(p)
Исправить
p <- ggplot(dat.m, aes(x = Vars, y = value, fill=variable))
return(print(p))
Вывести сейчас: ожидаемый вывод с желаемым графиком.
... print(histogram( ~ RT | factor(Type), data = data)) ...
– woobert 21 July 2011 в 22:49plot()
из пакетаgraphics
? Я вижу подобное поведение, но, похоже, это не исправляет. – naught101 18 May 2012 в 03:03