我遇到了一个面试问题,要求设计文字处理器。
在我的研究之后,我发现了Flyweight设计模式作为一种方法。我想出了下面的代码(忽略语法)。但我很难想到我的关键是什么,以及我对文字处理器的价值。 公共类格式 { public readonly string _fontname; public readonly string _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)
{
}
}
上述课程怎么样?如何通过实际处理单词来完成程序?
答案 0 :(得分:0)
老实说,我认为他们对模式的兴趣可能不如建筑。但是你可能已经给他们足够的材料来消化了。
我想说MDI是一个关键主题:多文档界面。多个标签包含多个文档。 每个文件系统文件有一个Document对象(两次打开同一个文件),并且每个Document可能有几个DocumentViews(swing:JTextPanes),由DocumentListener桥接。在不同的选项卡或垂直拆分的单个选项卡中,您可以滚动到另一个位置并仍然保留在拆分窗格中的第一个位置。 _特别强调,这是se
也许建立swing的EditorKit和StyledDocument。
因此,要了解UI知识点,创造力,功能,现有课程。
这一切都说,模式是采访中的重要资产,我也经历过。