微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

设计模式之——抽象工厂讨论内容

trufun 9:39:47 大家好,UML网上课堂开课啦 A()  9:41:34 哪里 阿门()  9:42:28 今天主题是什么? trufun 9:44:00 根据上几次临时课的测试,我们感觉希望学习设计模式的人多于想学UML,这可能是由于去年讲过UML,所以我们改为讲设计模式 A()  9:44:47 继续 阿门()  9:45:12 没错 A()  9:45:58 设计模式很有意思 trufun 9:46:40 今天接着上两堂课内容继续讲,今天先讲第一个模式:抽象工厂 我已被盗(759056164)  9:47:28 这个好 阿门()  9:47:39 Thxs A()  9:50:06 怎么不继续了 trufun 9:51:10 首先让我们回顾一下上堂课的内容:在设计模式中有两种类,一个实体类,另一个是辅助类,实体类从需求中来,而辅助类是根据需要添加的,不同模式有不同的添加 品味从容()  9:53:01 实体类则为抽象基类? trufun 9:53:21 不对 trufun 9:53:59 请看上堂记录 A()  9:54:25 都没有看到上堂 trufun 9:56:15 首先我们讨论抽象工厂这种模式想达到的目的,这是我们应用设计首先要考虑的问题:意图 A()  9:56:39 恩 trufun 9:58:38 在面向对象编程中,对于类,我们首先要实例化,这样才能使用它的属性方法 品味从容()  9:59:18 这没错 trufun 10:01:02 如果类之间没有关系(关联等);先实例化那个类,后实例化那个类没有关系 trufun 10:04:24 但是,类之间往往存在着复杂的依赖关系,要实例一个类,首先要实例化它内部依赖的其他类 A()  10:04:41 你说的是子类 A()  10:05:21 哦,不对,我理解了,是类中引用其他类 trufun 10:05:33 子类只是一种 A()  10:05:54 哦 乐百氏(14048124)  10:07:57 包括聚合、组合、关联引用吧 trufun 10:09:54 比如手电类要实例化,必须依赖于电池类先实例化,否则,手电类的发光方法(依赖电池类)就无法实现 webmaster()  10:10:55 =========大家可向企业推荐trufun的内训课程,可获赠苹果ipad或者iPhone 4S产品!======== trufun 10:15:37 在软件开发中存在着大量的这样的关系,这种实例化的需求并不是固定的,是随着客户端的操作在随时变化 trufun 10:18:18 为了解决这个问题,人们总结出一种设计模式,叫抽象工厂,用它来解决复杂系统类的实例化问题 trufun 10:21:50 总结:1.类之间有关系,所以实例化有顺序,2.编程并不是先把所有类都实例化好以后才使用,而是根据客户端得操作动态实例化 webmaster()  10:23:57 老师同时兼顾好几个群的课程,所以会慢一点 trufun 10:23:58 设计模式意图:提供一个创建一系列相关或依赖对象的接口,而无需知道内部的实现类。即客户端只和抽象类定义的接口交互,而不和具体类定义的接口交互 webmaster()  10:24:11 不过大家刚好可以多参与讨论 webmaster()  10:24:39 另外也可以多了解trufun针对企业推广的一些列UML相关课程, webmaster()  10:25:03 包含需求、分析设计、架构、测试、设计模式、复用等高端课程 webmaster()  10:25:34 可以快速解决企业问题,大家可以向企业推荐选择以上课程 trufun 10:28:46 为了解决实例化的问题,我们必须加入辅助类,这个辅助类就是我们上堂课介绍的接口和抽象类 乐百氏(14048124)  10:30:25 辅助类的添加,就按设计模式的标准来配置就行了吧? webmaster()  10:30:32 推荐3天的企业内训,就可获赠trufun送出的苹果iPad一台! trufun 10:31:01 请大家到下列地址去看模型图: http://blog.sina.com.cn/s/blog_a1c79d4801014gdu.html webmaster()  10:31:11 推荐5天的企业内训,可获赠苹果iPhone 4S一部 trufun 10:31:32 对 trufun 10:34:02 大家从模型图中找出实体类和辅助类 trufun 10:36:51 实体类只有产品A1,A2,B1,B2,并且B1,B2依赖于A1,A2 trufun 10:40:54 另外一个实体类是客户端类,它动态实例化有关,其余都是辅助类 trufun 10:46:05 这些辅助类的作用实质上是创建责任的分配,就是由哪个类创建那个类 trufun 10:49:09 说的再白一点,客户端动态操作变化,这个变化传递给辅助类,又它决定先实例化那个类,后实例化那个类 trufun 10:52:19 这些类有的资料叫做产品族,或者层次结构产品 trufun 10:54:47 有两个抽象产品类就是产品族的概念 trufun 10:58:10 上堂课我们讲过,我们的设计模式的课侧重于模型,从第三要素,角色职责讨论设计模式 trufun 11:03:05 那么,在抽象工厂中有哪些角色呢,我们先从实体类看起,就是A类产品和B类产品角色,B类依赖于A类,另一个是客户端角色 trufun 11:08:18 在辅助类中,分为产品和工厂两部分,产品类主要是A,B两类产品的接口,实现对实例化的封装 trufun 11:15:29 另一个角色抽象工厂,它封装了要实例化那一个系列的产品,以满足客户端调用的要求 trufun 11:16:31 还有两个辅助类是抽象工厂的实现类,它动态决定具体实例化那个系列产品 trufun 11:20:26 电池和手电就象我们刚才例子中A,B产品,产品系列就象普通手电和高档手电这样的产品系列 A()  11:22:33 形象 trufun 11:22:48 谢谢 trufun 11:24:18 所以左上角的抽象工厂三个类,就是解决产品系列的问题,并满足客户端的调用 trufun 11:27:31 右下角的辅助类,主要解决产品族的问题,并满足产品系列实现的调用 trufun 11:29:47 前面我们讨论的是抽象工厂的角色和职责,是设计模式第三要素 trufun 11:32:51 有了角色和职责这些静态内容,你可能要问这几个类是这样配合来满足客户端得变化呢? trufun 11:35:38 我们用通讯图反映这个动态过程:地址: http://blog.sina.com.cn/s/blog_a1c79d4801014gdw.html trufun 11:39:52 今天的课就到这里,下堂讲工厂方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐