Это кажется, что Вы понимаете, как интерфейсы работают, но не уверены в том, когда использовать их и что способствует, они предлагают. Вот несколько примеров того, когда интерфейс имел бы смысл:
// if I want to add search capabilities to my application and support multiple search
// engines such as google, yahoo, live, etc.
interface ISearchProvider
{
string Search(string keywords);
}
тогда я мог создать GoogleSearchProvider, YahooSearchProvider, LiveSearchProvider и т.д.
// if I want to support multiple downloads using different protocols
// HTTP, HTTPS, FTP, FTPS, etc.
interface IUrlDownload
{
void Download(string url)
}
// how about an image loader for different kinds of images JPG, GIF, PNG, etc.
interface IImageLoader
{
Bitmap LoadImage(string filename)
}
тогда создают JpegImageLoader, GifImageLoader, PngImageLoader, и т.д.
, Большинство дополнений и сменных систем отделываются от интерфейсов.
Другое популярное использование для шаблона Репозитория. Скажите, что я хочу загрузить список почтовых индексов из других источников
interface IZipCodeRepository
{
IList<ZipCode> GetZipCodes(string state);
}
тогда, я мог создать XMLZipCodeRepository, SQLZipCodeRepository, CSVZipCodeRepository, и т.д. Для моих веб-приложений, я часто создаю репозитории XML вначале, таким образом, я могу разбудить что-то и работающий до Базы данных Sql, являющейся готовым. Как только база данных готова, я пишу SQLRepository для замены версии XML. Остальная часть моего кода остается неизменной, так как это выполняет soley прочь интерфейсов.
Методы могут принять интерфейсы, такие как:
PrintZipCodes(IZipCodeRepository zipCodeRepository, string state)
{
foreach (ZipCode zipCode in zipCodeRepository.GetZipCodes(state))
{
Console.WriteLine(zipCode.ToString());
}
}
Обновление от февраля 2016 г .: ошибка 75981 официально исправлена!
См. Ответ Jmini ниже
Обновление от июля 2015 года, 6 лет спустя:
Ошибка, упомянутая ниже, кажется исправленной в Eclipse 4.x.
Эрик Ван комментарии ниже :
@date ${id:date('YYYY-MMM-dd')} ${time}
это дает мне английский формат даты и времени в eclipse 4.
Исходный ответ 2009 Eclipse 3.x
Argh! Именно для этого существует давняя ошибка: ошибка 75981
Переменная
$ {date}
может быть расширена, чтобы принимать аргумент (аналогично другим параметризации, добавленные в 3.3M1), например$ {d: date (format)}
, гдеформат
- шаблон дляSimpleDateFormat
.
Единственная альтернатива было бы изменить класс SimpleTemplateVariableResolver
(как описано в этот поток ) из пакета org.eclipse.jface.text.templates
. (У вас есть пример такого расширения ).
В этой ветке упоминаются источники, где вы можете найти класс.
\eclipse\plugins\org.eclipse.platform.source_3.1.0\src\org.eclipse.text_3.1.0\src.zip
Пример:
public static class Date extends SimpleTemplateVariableResolver {
/**
* Creates a new date variable
*/
public Date() {
super("date", TextTemplateMessages.getString("GlobalVariables.variable.description.date")); //$NON-NLS-1$ //$NON-NLS-2$ }
protected String resolve(TemplateContext context) {
//return DateFormat.getDateInstance().format(new java.util.Date());
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
return df.format(new java.util.Date()); } }
Вы можете указать Eclipse использовать локаль, отличную от локали вашей операционной системы. Eclipse 3.5 (64 бит) не использует настройку региона MacOS X. Язык установки MacOS X english с Германией в качестве страны обеспечивает неправильный формат даты.
Вы можете исправить это для вашей установки Eclipse, если добавите следующие строки в ваш eclipse.ini:
-Duser.language=de
-Duser.region=DE