对话框工厂

1.对于工厂我的理解:
良好的封装性。使用和创建,初始化分开。
创建和初始化的工作交给工厂类,这样,不必在使用的地方完成大量复杂的初始化工作。
http://hi.baidu.com/wuweihi/blog/item/456a723f7bdd01c77c1e7156.html
http://blog.csai.cn/user1/25929/archives/2009/35622.html
openoffice中的对话框工厂。
对话框工厂:
F:\DEV300-hg\sd\inc\sdabstdlg.hxx
先定义好类
class AbstractAnimationDlg : public VclAbstractDialog
{
public:
//virtual void Apply(TabPage* pPage) = 0;
virtual const SfxItemSet* GetOutputItemSet() const =0;
};

1.在工厂类SdAbstractDialogFactory里定义一个纯虚函数,例如:
virtual AbstractAnimationDlg* CreateAnimationDlg( ::Window* pParent, const SfxItemSet* pAttr, ::sd::View* pView )=0;

SdAbstractDialogFactory::create()创建一个工厂对象。(怎么实现的?有纯虚的类能不能有实例?????)
=====================================================================
class SdAbstractDialogFactory_Impl : public SdAbstractDialogFactory实现了虚基类。
============================================================================================================
SdAbstractDialogFactory_Impl实现了AbstractAnimationDlg
class AbstractAnimationDlg_Impl: public AbstractAnimationDlg
{
DECL_ABSTDLG_BASE(AbstractAnimationDlg_Impl,::sd::AnimationDlg)//定义一个构造函数和虚构函数。构造函数的参数为:::sd::AnimationDlg *p,并初始化了其对象成员pDlg
//virtual void Apply( TabPage* pPage );
virtual const SfxItemSet* GetOutputItemSet() const;
};


DECL_ABSTDLG_BASE(AbstractAnimationDlg_Impl,::sd::AnimationDlg)
展开:
::sd::AnimationDlg *pDlg;
public:
AbstractAnimationDlg_Impl(::sd::AnimationDlg *p):pDlg(p)
{
}
virtual ~Class();

[0] = 0x117b3f80 SdAbstractDialogFactory_Impl::CreateBreakDlg(Window *, sd::DrawView *, sd::DrawDocShell *, unsigned long, unsigned long)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据对话框组件的需求,可以采用工厂方法模式来实现。 首先,定义一个抽象的对话框Dialog类,包含图标、标题、提示内容、确认按钮、取消按钮和关闭按钮等6个组成部分。 ``` public abstract class Dialog { protected ImageIcon icon; protected String title; protected String message; protected JButton confirmButton; protected JButton cancelButton; protected JButton closeButton; public abstract void create(); } ``` 然后,定义具体产品类WarningDialog、TipDialog和ConfirmDialog,分别表示警告对话框、提示对话框和确认对话框。 ``` public class WarningDialog extends Dialog { public void create() { // 创建警告对话框的图标、标题、提示内容、确认按钮、取消按钮和关闭按钮 } } public class TipDialog extends Dialog { public void create() { // 创建提示对话框的图标、标题、提示内容、确认按钮、取消按钮和关闭按钮 } } public class ConfirmDialog extends Dialog { public void create() { // 创建确认对话框的图标、标题、提示内容、确认按钮、取消按钮和关闭按钮 } } ``` 接下来,定义一个对话框工厂类DialogFactory,负责创建具体的对话框。 ``` public class DialogFactory { public Dialog createDialog(String type) { if (type.equals("warning")) { return new WarningDialog(); } else if (type.equals("tip")) { return new TipDialog(); } else if (type.equals("confirm")) { return new ConfirmDialog(); } else { return null; } } } ``` 最后,使用工厂方法来创建对话框。 ``` public class Client { public static void main(String[] args) { DialogFactory factory = new DialogFactory(); Dialog dialog1 = factory.createDialog("warning"); dialog1.create(); Dialog dialog2 = factory.createDialog("tip"); dialog2.create(); Dialog dialog3 = factory.createDialog("confirm"); dialog3.create(); } } ``` 以上就是采用工厂方法模式来实现对话框组件的设计和编码实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值