抽象工厂模式向客户端提供一个接口,使得客户端在不必指定具体类型的情况下,创建多个产品族中的对象。
使用抽象工厂的条件:
1、一个系统不应依赖于产品如何被创建,组合和表达的细节。
2、有多个产品族,而系统质消费其中一个族中的产品。
3、同属于一个产品族中的产品是在一起使用的。
4、系统提供一个产品的苦,所有产品都是以相同的接口实现。
简单工厂模式:一般是一个工厂类对应多个具体产品类,通过向工厂传递的参数来判断创建某一具体的产品类。基本实现了八客户端与具体产品类的断开,但是添加新产品类时,则需要修改工厂类
工厂方法模式:一个工厂接口下的多个工厂一对一的对应多个具体产品类,客户端通过创建工厂接口的具体子工厂类,才创建具体对象类,这种方法在添加新产品类时,修改较少,只需要添加对应的子工厂类和具体产品类。
抽象工厂类,一个工厂类对应一个产品族,
SmartClient示例:IssueVision
ThreadHelper.dll提供线程相关组件
SplashScreen闪现的屏幕
SingletonApp 唯一例程,第二个实例不会动作
SafeLabel 可以在多个线程下安全操作的的Label
BackgroundWorker 后台工作程序
RunWorkerAnsy 开始后台工作
DoWorkEventHandler 后台执行开始事件,执行异步任务
RunWorkerCompletedEventHandler 后台执行事件结束
ReportProgress() 报告后台进度
ProgressChangedEventHandler 进度改变事件用于画进度条
CancelAnsync() 取消后台任务
IssnueVisionWeb:
IssueVisionWebServices.asmx:
IVData:组件,调用DataAdapter实现数据操作,含业务逻辑
Securityhelper:封装了安全认证操作
Common:读取配置
EventLogHelper:辅助操作日志
IssueVision:
WebServiceLayer: 提供WS访问的中介. URL从配置文件读取. CredencialHeader从登陆用户取得.
UserSettings: 当前用户的状态和状态的本地缓存
SerializationHelper: 数据到文件的加密存储
DataProtection: 调用Win32API实现的加密解密
LoginForm: 登录. 被MainForm调用. 窗体淡入淡出.
IssueSubject: ISubject 业务模型Model
SaveIssueData() 保存业务数据到本地文件
LoadIssueData() 加载业务数据
AppUpdator: SmartClient的关键。自动保持版本更新。
Assembly类
定义一个Assembly,他是可重用、无版本冲突并且可自我描述的公共语言运行库应用程序构造块。
Command pattern
WinForm的程序如何传递数据呢?
如果要从第一个窗体传递一个Data到第二个,要在第二个窗体的上钉一个属性用来接受对象,在第一个窗体内,在ShowDialog的时候把这个窗体到对象复制就可以。
浙公网安备 33010602011771号