首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >工厂模式问题

工厂模式问题
EN

Stack Overflow用户
提问于 2010-08-07 13:11:59
回答 2查看 335关注 0票数 3

我是OO的N00b。人们会因为我没有回答或者没有任何分数而对我大加抨击。我能说什么呢,除了,我没有资格!

不管怎样,我的问题是,我已经在你的经典“动物样本”中看到了足够多的遗传例子,其中有熊的咆哮,猫的叫声等等……

假设我正在基于一些来自表单(数据库、XML)的数据动态创建Windows控件

假设我创建了一个名为CreateControl的静态工厂,并传入了控件类型c表示组合框,t表示文本框等,因此我有以下语法control c= CreateControl('c');这将向我返回一个combobox

到目前为止,工厂模式是有效的。每当我想要引入另一个控件时,我都会转到工厂模式切换语句并添加另一个控件类型。

在我的winforms中,对于我使用这个健壮的工厂模式创建的每个控件,我想根据我得到的控件来创建事件处理器。例如,如果我创建ComboBox,我为5个不同的事件创建事件处理器,如果控件是Textbox,则有2个事件。因此,根据创建的控件,有不同的事件处理程序具有不同的签名。

有些事件需要来自控件所在窗体的值,有些则不需要

我有这个switch语句,用于声明基于我创建的控件的事件!我如何利用代码背后的那部分代码,并做正确的事情,即分离关注点,并在代码背后很少或零代码!!

谢谢你的帮助

EN

回答 2

Stack Overflow用户

发布于 2010-08-07 13:19:04

  1. 将类型传递给工厂,而不是字符或字符串或其他任何类型。使用Activator实例化。这样,工厂就会为工厂获取一个Hashtable<Type, List>,它告诉每个控件类型要侦听哪些事件。
  2. 开始接受应答。这也可以在1之前完成。
票数 0
EN

Stack Overflow用户

发布于 2010-08-07 13:27:48

你谈论switch语句听起来像是你误解了你在做什么。

有两种类型的工厂,一种是听起来像你想要/使用的静态助手,另一种是依赖注入。

首先,你要在一个类上使用一个或多个静态方法,为对象编写通用的构造代码--所以创建一个并设置它的事件处理程序。我不知道为什么您要传入一个字母,而不是为每个类型创建一个方法。

第二种是依赖注入的形式,其中工厂接口被声明,它有一个创建对象的方法,然后调用者传递接口的各种实现来创建不同的对象,因此创建组合的一个创建文本控件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3429208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档