Дизайн текстового процессора
Я наткнулся на вопрос об интервью с просьбой разработать текстовый процессор.
После моего исследования я нашел шаблон проектирования Flyweight в качестве подхода. Я пришел с кодом ниже (игнорировать синтаксис). Но мне трудно думать о том, что будет моим ключом и какова будет моя ценность для текстового процессора. открытый класс Format { public readonly string _fontname; общедоступная строка только для чтения _weight; public readonly int _size;
public Format(string fontname, string weight, string size)
{
_fontname = fontname;
_weight = weight;
_size = size;
}
}
public class TextFromatInfo
{
public _readonly Format _oFormat
public TextFormatInfo ( Format oformat)
{
_oFormat = oFormat;
}
public Format GetFormat
{
get {return this._oFormat}
}
public void ApplyFormat(format Format)
{
console.writeline ("apply format fontname: " format.forntname +
"size: " + format.size + "weight : " format.weight
}
}
public class TextFormatFactory
{
public readonly IDictionary<Format, TextFormatInfo> _cache =
new Dictionary <Format, TextFormatInfo>
public TextFormatInfo GetTextFormatInfo(Format oFormat)
{
if (_cache.ContainsKey(oFormat)) return _cache[oFormat];
var OTextFormatInfo= new TextFormatInfo(oFormat);
_cache.add(OTextFormatInfo.GetFormat, OTextFormatInfo);
return OTextFormatInfo ;
}
}
public class TestFlyWeight
{
private static TextFormatInfo[] formtInfo = new TextFormatInfo[100];
private static TextFormatFactory ff;
public void ProcessesWord(char c, string fontname, int size, string weight)
{
}
}
Как будет выглядеть вышеуказанный класс? Как я могу завершить программу, фактически обрабатывая текст?
1 ответ
Честно говоря, я думаю, что они, возможно, не столько интересовались моделями, сколько архитектурой. Но вы, возможно, дали достаточно материала, чтобы они могли переварить.
Я бы сказал, что MDI является ключевой темой здесь: интерфейс нескольких документов. Несколько вкладок с несколькими документами. Наличие одного объекта Document на файл файловой системы (дважды открывающий один и тот же файл) и, возможно, наличие нескольких DocumentViews (swing: JTextPanes) на один документ, соединенных с помощью DocumentListener. На разных вкладках или в отдельной вкладке, разделенной по вертикали, так что вы можете перейти к другому месту и остаться на первом месте в разделенных панелях. Особо подчеркните, что это само по себе
Может быть, создание свинга EditorKit и StyledDocument.
Таким образом, чтобы сделать точки UI знают легкость, креативность, особенности, существующие классы.
Все это говорит о том, что шаблоны также являются важным преимуществом в интервью.