我是OO的N00b。因为没有回答或没有任何积分,人们向我挥手致意。 我能说什么除了,我不合格!
无论如何,这是我的问题 我在经典的“Book”样本中看到了足够多的继承示例 动物,熊咆哮,猫喵等...
假设我正在根据某些数据(数据库,XML)动态创建Windows控件
假设我创建了一个名为CreateControl的静态工厂,并传入控件类型 c用于组合框,t用于文本框等 所以我有以下语法 控制c = CreateControl('c'); 这给我一个ComboBox
到目前为止,工厂模式正在发挥作用。 无论何时我想引入另一个控件,我都会转到工厂模式切换语句并添加另一个控件类型。
在我的winforms中,对于我使用这个强大的工厂模式创建的每个控件,我想根据我得到的控件创建事件处理程序 例如,如果我正在创建ComboBox,我会为5个不同的事件创建事件处理程序 如果控件是文本框,则有2个事件。 因此,根据创建的控件,有不同的事件处理程序具有不同的签名。
某些事件需要来自控件所在表单的值,有些不需要
我有这个switch语句,用于根据我创建的控件声明事件! 我如何在后面的代码中使用代码中的那部分代码并做正确的事情,即关注点的分离以及代码中的少量代码或零代码!!
感谢您的帮助
答案 0 :(得分:0)
传递类型而不是char或
字符串或任何工厂。
使用Activator
进行实例化。
这样工厂获益
灵活性
通过工厂Hashtable<Type,
List>
告诉每个控件
输入要收听的事件。
开始接受答案。这也可以在1
之前完成。
答案 1 :(得分:0)
你对switch语句的讨论听起来好像是在误解你在做什么。
有两种类型的Factory,一个静态助手,它听起来像你想要/使用的和依赖注入。
首先,您在一个类上执行一个或多个静态方法,这些方法为对象执行常见的构造代码 - 因此创建一个并设置它的事件处理程序。我不确定你为什么要传递一封信而不是每种类型创建一种方法。
第二种是依赖注入的形式,其中声明了一个工厂接口,它具有创建对象的方法,然后调用者传递接口的各种实现以获取创建的不同对象,因此创建一个创建文本的Combos控件。