我是OO的N00b。人们会因为我没有回答或者没有任何分数而对我大加抨击。我能说什么呢,除了,我没有资格!
不管怎样,我的问题是,我已经在你的经典“动物样本”中看到了足够多的遗传例子,其中有熊的咆哮,猫的叫声等等……
假设我正在基于一些来自表单(数据库、XML)的数据动态创建Windows控件
假设我创建了一个名为CreateControl的静态工厂,并传入了控件类型c表示组合框,t表示文本框等,因此我有以下语法control c= CreateControl('c');这将向我返回一个combobox
到目前为止,工厂模式是有效的。每当我想要引入另一个控件时,我都会转到工厂模式切换语句并添加另一个控件类型。
在我的winforms中,对于我使用这个健壮的工厂模式创建的每个控件,我想根据我得到的控件来创建事件处理器。例如,如果我创建ComboBox,我为5个不同的事件创建事件处理器,如果控件是Textbox,则有2个事件。因此,根据创建的控件,有不同的事件处理程序具有不同的签名。
有些事件需要来自控件所在窗体的值,有些则不需要
我有这个switch语句,用于声明基于我创建的控件的事件!我如何利用代码背后的那部分代码,并做正确的事情,即分离关注点,并在代码背后很少或零代码!!
谢谢你的帮助
发布于 2010-08-07 13:19:04
Activator实例化。这样,工厂就会为工厂获取一个Hashtable<Type, List>,它告诉每个控件类型要侦听哪些事件。1之前完成。发布于 2010-08-07 13:27:48
你谈论switch语句听起来像是你误解了你在做什么。
有两种类型的工厂,一种是听起来像你想要/使用的静态助手,另一种是依赖注入。
首先,你要在一个类上使用一个或多个静态方法,为对象编写通用的构造代码--所以创建一个并设置它的事件处理程序。我不知道为什么您要传入一个字母,而不是为每个类型创建一个方法。
第二种是依赖注入的形式,其中工厂接口被声明,它有一个创建对象的方法,然后调用者传递接口的各种实现来创建不同的对象,因此创建组合的一个创建文本控件。
https://stackoverflow.com/questions/3429208
复制相似问题