delphi设计模式 多语言开发


系统支持简体、繁体、英文三种语言,开发语言Delphi

type
   //接口定义
  ILanguageTrans = interface
    ['{EE1BAE27-2E88-4F76-8AF3-169B6C7BF7C1}']
    procedure ReadForm; //把界面所有控件翻译
    procedure WriteForm;//把界面所有控件写入
    function GetText(Msg: string): string;
    function BIG5ToGB(Str: string): string;
    function GBToBIG5(Str: string): string;
    procedure ShowManager;  //打开管理界面


  end;


  TLanguageTrans = class(TInterfacedObject, ILanguageTrans)
  private
  protected
  public
    constructor Create(Form: TForm; MTSName, ModuleCode: string); { 构造方法 }
    procedure ShowManager; virtual; //管理界面
    procedure ReadForm; virtual;
    procedure WriteForm; virtual;
    function GetText(Msg: string): string; virtual;
    function BIG5ToGB(Value: string): string; virtual;
    function GBToBIG5(Value: string): string; virtual;
  end;


  // 保存到数据库
  TDBLanguageTrans = class(TLanguageTrans)
  private
    FFrmForm: TForm;
    FTranDataSet: TClientDataSet;
    FDB: TDBClass;
    FMTSName: string;
    FModuleCode: string;
    function ReadData(ConName: string): string;
  protected


  published
    property frmForm: TForm read FFrmForm write FFrmForm;
    property TranDataSet: TClientDataSet read FTranDataSet write FTranDataSet;
    property DB: TDBClass read FDB write FDB;
    property MTSName: string read FMTSName write FMTSName;
    property ModuleCode: string read FModuleCode write FModuleCode;
  public
    constructor Create(Form: TForm; MTSName, ModuleCode: string); { 构造方法 }


    procedure ShowManager; override;
    procedure ReadForm; override;
    procedure WriteForm; override;


  end;


  // INI
  TIniLanguageTrans = class(TLanguageTrans)
  private
    FIniFileName: string;
    FFrmForm: TForm;


  published
    property IniFileName: string read FIniFileName write FIniFileName;
    property frmForm: TForm read FFrmForm write FFrmForm;


  public
    constructor Create(Form: TForm; MTSName, ModuleCode: string); { 构造方法 }
    procedure ReadForm; override;
    procedure WriteForm; override;
    procedure ShowManager; override;


  end;


  //工厂模式
  TLanguageTransFactory = class
  private
  public
    function Create(Form: TForm; MTSName, ModuleCode: string): TLanguageTrans;
  end;


客户端调用:

var
  LanguageTransFactory: TLanguageTransFactory;
begin
  (LanguageTransFactory.Create(self, MTSName, ModuleCode)).ReadForm;


如果增加或更改存储方式,如XML,只需在工厂类修改代码,其它客户端调用的地方不必修改,实现客户端代码与类的松散耦合

posted on 2012-05-31 14:23  廖波涛  阅读(270)  评论(0编辑  收藏  举报