大话设计模式读书笔记.doc

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大话设计模式读书笔记

简单工厂模式 1、代码规范性 A、变量命名规范化 B、if语句逻辑清晰,单向分支逻辑判断应该避免使用重复的if判断 C、异常情况判断 2、面向对象编程 (1)面向对象编程优点:A、可维护 B、可复用 C、可扩展 D、灵活性好 (2)通过封装、继承、多态将程序耦合性降低,使用设计模式使程序更加灵活,易改,易复用 3、业务封装(将业务逻辑与界面逻辑分开) (1) 低耦合:高保密,高易维护性。 (2) 简单工厂模式 以下为C#代码: Public class OperationFactory { Public static Operation CreateOperate(string operate) { Operation oper = null; Switch (operate) { Case “+”: oper = new OperationAdd(); Break; Case “-”: Oper = new OperationSub(); Break; Case “*”: Oper = new OperationMul(); Break; Case “/”: Oper = new OperationDiv(); Break; } Return Oper; } } (3) UML类图 *注:1、“动物”代表类 2、类分三层:第一层显示类的名称,如是抽象类,用斜体表示; 第二层是类的特性,即字段和属性; 第三层是类的操作,即方法和行为; 3、“+”表示public,“-”表示private,“#”表示protected 4、接口图顶部有<<interface>>标注,第一行是接口名称,第二行是接口方法。 5、继承关系用“△”和实线表示,子类指向父类,表示子类继承父类 6、实现接口使用“△”和虚线表示,实现类指向接口,表示类实现了接口 7、类与类关联关系用虚线相连 8、聚合关系(弱拥有关系,拥有者包含被拥有者,但被拥有者不是拥有者不可分割的一部分)使用“◇”+ 实线箭头(→)表示,聚合体指向单体,表示聚合体由单体聚合成。聚合体有基数概念,表示几个单体可以聚合成几个聚合体。 9、合成关系(强拥有关系,合成前体与合成体是严格的部分和整体的关系)使用“◆”+ 实线箭头(→)表示,合成体指向合成前体,表示合成体由合成前体合成。合成关系有基数概念,表示几个合成前体可以组合成几个合成体。 10、依赖关系,用虚线头“←……”表示,依赖主体指向依赖物,表示依赖主体依赖于依赖物。 策略模式 面向对象编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。 工厂模式的弊端:仅用于创建对象,对于不断变化的算法维护成本较高。 策略模式:定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化不会影响到使用算法的客户。 以下为C#代码: //抽象算法类 Abstract class Strategy { //算法方法 Public abstract void AlgorithmInterface(); } //具体算法A: Class ConcreateStrategyA: Strategy { //算法A实现方法 Public override void AlgorithmInterface() { Console.WriteLine(“算法A实现”); }; //具体算法B ……… } //Context,用一个ConcreateStrategy类配置,维护一个对Strategy对象的引用。 //上下文 Class Context { Strategy Strategy; Public Context(Strategy Strategy)//初始化时,传入具体的策略对象 { This.strategy = strategy; } //上下文接口 Public void ContextInterface()//根据具体的策略对象,调用其他算法//的方法 { Strategy.AlgorithmInterface(); } } //客户端代码 Static void Main(string[] args)

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档