大话设计模式笔记1~5

简单工厂模式

不管什么设计模式,都基本遵循以下几个数据原则:

  • 依赖倒置原则:高层模块不依赖低层,反之可以;二者均依赖于抽象。抽象不依赖实现,反之可以。
  • 开放封闭原则(OCP~ open close principle):对扩展开放,对更改封闭。类模块可扩展,不可修改
  • 单一职责原则(SRP):
  • 替换原则:子类应能替换掉他们的基类(IS-A)。
  • 接口隔离原则:接口尽可能小但功能要完备。
  • 优先使用对象组合功能实现,而不是类继承。
  • 针对接口编程,而不是实现。
  • 封装变化点:使用封装创建对象的分界。

面向对象

  • 特性: 可维护 可复用 可扩展 程序灵活

  • 面向对象优点: 通过封装、继承、多态进行解耦,从而获得以上特性。

  • 紧耦合、松耦合:

简单工厂模式(注意表示关系的符号)

  • 使用一个单独类来创造实例化的过程,就是简单工厂模式。

  • UML图
    UML图_2

  • UML图: 第一行是接口的名称,如果是抽象类,就用斜体表示。
    第二行是类特性,一般为字段类和属性。
    第三行是类的操作,一般为方法和行为。
    继承关系用空心三角+实线。

  • “关联”关系:在这里插入图片描述
    企鹅和南极有关联关系,可用关联符号表示(实线箭头)。

  • 聚合关系:大雁和雁群
    聚合关系(aggregation):一种弱归属关系,体现A可以包含B,但B不一定属于A的一部分。常用空心菱形+实线。

  • 合成关系(composition):一种强‘拥有’关系,体现了严格的部分和整体,如部分和整体耳钉生命周期。

  • 鸟和翅膀

  • 依赖关系(dependency):水和空气之于动物相当于依赖

策略模式

  • 面向对象的编程,并非一味使用类。类是为了封装,但分类的基础是抽象,具有相同属性和功能的对象集合才是类。

  • 策略模式: 分别封装算法,使其可以相互之间互相替换,不会影响到使用算法的客户。

  • 策略模式UML图  - concentratestrategy封装了具体算法或者行为
    在这里插入图片描述

  • 策略模式的实现:

  • 策略模式解析:
    策略模式是一种定义一系列算法的方法,从概念上看,所有的算法都完成相同的工作,比如对某一打折功能的具体费率,不过实现不同,调用也相同。这么做减少了实现之间的耦合性。
    策略模式中的strategy类层次为context定义了一系列可重用方法、行为,继承有助于析取这些公共功能(DP)。
    策略模式简化了单元测试,没个算法都有自己类,可以对接口单独测试。(DPE)

单一职责原则

单一职责原则:功能要“单一”。对一个类而言,应该仅有一个引起他变化的原因(ASD)。
一个类中如果功能太多,相当于加耦合。

设计方块游戏

在这里插入图片描述

  • 软件设计的内容,就是找到职责(任务)并相互分离。
    判断是否应该分离: 如果有不止一个的动机改变一个类,那他就具有多个职责(ASD),应考虑分离。

开放-封闭原则

  • 即软件实体(类、模块、函数)等应该支持扩展,但不能修改(ASD)。
    对扩展是开放的,对更改是封闭的。------多扩展,少修改
    对于无法或者不可能完全封闭的变化,设计人员需对模块应该对变化封闭做出选择-----猜出最可能发生变化的类,然后构造抽象类进行隔离。
    开放封闭原则UML

依赖倒置原则

  • 针对接口编程,而不是针对实现编程。

里氏代换原则

  • 一个软件实体如果使用的是一个父类的情况下,那也适用于其子类。而且它察觉不出父类对象和子类对象的变化。即**“父类替换成子类,软件的行为没有变化。”**

装饰模式(Decorator)

  • 动态的给一个对象添加一些额外的职责,从增加功能来讲,装饰模式比生成子类更灵活。

装饰模式结构图

  • 装饰模式总结:将功能动态的添加更多功能的一种方式。
  • 系统需要新功能时,即向旧的类中添加新代码,这些新代码相当于装饰原有类的核心职责和主要行为。

代理模式

  • 定义:为其他对象提供一种代理以控制对这个对象的访问。
    代理模式结构图

代理模式应用

应用场合
  • 远程代理:为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。
  • 虚拟代理: 根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象DP。
  • 安全代理: 用来控制真实对象访问时的权限DP。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值