2013-06-27 60 views
0

我遇到了一個採訪問題,要求設計一個文字處理器。設計一個文字處理器

經過我的研究,我發現Flyweight設計模式是一種方法。我想出了下面的代碼(忽略語法)。但我很難考慮什麼是我的關鍵,以及我對文字處理器的價值。 public class格式 { 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

老實說,我認爲他們可能沒有那麼熱衷於模式和建築。但你可能已經提供了足夠的材料供他們消化。

我會說MDI是這裏的一個關鍵主題:多文檔界面。包含多個文檔的多個標籤。 每個文件系統文件具有一個Document對象(兩次打開同一個文件),並且可能每個Document有多個DocumentView(swing:JTextPanes),由DocumentListener橋接。在不同的選項卡或垂直分割的單個選項卡中,您可以滾動到另一個地方,仍然保留在分割窗格的第一個位置。 _特別強調,這是se

也許構建swing的EditorKit和StyledDocument。

因此,要使UI知識點,創造力,功能,現有的類。

這一切都說,模式在面試中也是重要的資產,我也經歷過。