设计模式 笔记(1)

类关系

依赖:表明类A在完成某些功能时必须使用类B,称类A与类B存在依赖关系。具体表现为类A的方法使用类B作为方法参数、局部变量、静态调用等。
关联:表明类A与类B的实例对象存在固定的对应关系。具体表现为类A的成员变量为类B,这样在类A的实例对象中存在类B的实例对象。单向关联、双向关联。
聚合:一种特殊的关联关系。但关联关系中,类是相互独立的。聚会关系中类与类是包容关系,即类A中含有类B。强调“整体-个体” 代码区别: 关联关系中作为成员变量的类一般会在类中赋值。 聚合关系中作为成员变量的类一般使用set方法赋值。
组合:一种特殊的关联关系。类与类的耦合度比聚合关系强烈。强调“整体-部分”、即同生共死。代码上组合关系中的成员变量一般会在构造方法中赋值,唯一不可改变。
继承:表明类与类、接口与接口之间的父子关系。表现为extends
实现:表明类与接口之间的实现关系。表现为implements


开闭原则
Software entities should be open for extension,but closed for modification
软件实体应当对扩展开放,对修改关闭
在不修改原code(functions等)的基础上提供功能的可扩展性。 具体可表现为对系统内的所以可能行为进行抽象。这种抽象整合系统具体类的全部必须实现的方法特征。此后,系统具体的实现依照该抽象进行扩展。
 用抽象构建框架,用实现扩展细节。
 
对可变性的封装原则
Principle of Encapsulation of Variation ,EVP
对系统的可变性因素进行抽象封装。如人是可变的,依据性别、行为等因素可以使人变得更为具体,那么在设计时应该将人进行抽象封装,此后,系统内依据对人的抽象继承出男人、女人等具体对象。
对应与树形结构。子节点含有对父节点的抽象实现。将继承看成树形结构,父节点的每一分支是子节点对其抽象的一次具体实现。


单一职责原则
定义:不要存在多于一个导致类变更的原因
即减少code之间的耦合性。在某一处修改code不希望导致需要修改另一处code。 单个类完成单一职责保证类之间的职责耦合度减少。这样一个类发生错误或者需求改变,不会引起其他类的code错误。


里氏替换原则
所以使用到类A的地方,由类B替换后,程序仍能够完成正确运行并保证原有行为;所以引用父类的地方都可以透明地使用其子类
在继承过程中。子类尽量避免重载父类方法,一旦重载父类方法有可能导致使用父类的地方无法使用子类,并且这样就破坏了继承关系中父子类功能特征的统一性。
子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。 子类中可以增加自己特有的方法。 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
在继承过程中,尽量在父类的原有基础上进行子类的功能扩充


依赖倒置原则
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
抽象指的是接口或者抽象类,细节就是具体的实现类,使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。
在coding时调用实例对象时我们应该更倾向于面向一类对象而不是一个对象。这样会使类与类之间的耦合度减至最小。当code需要更改时出错的概率就变小的。
依赖倒置原则的核心就是要我们面向接口编程


接口隔离原则
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
即使是抽象,我们也希望它成为最符合我们需要的抽象,即这种抽象内不必包含我们不需要的其他元素。
建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。
其一,单一职责原则原注重的是职责;而接口隔离原则注重对接口依赖的隔离。其二,单一职责原则主要是约束类,其次才是接口和方法,它针对的是程序中的实现和细节;而接口隔离原则主要约束接口接口,主要针对抽象,针对程序整体框架的构建。
防止过度抽象,我们应该倾向于使用我们所需要部件而不是使用一个综合冗杂的工具。


迪米特法则
定义:一个对象应该对其他对象保持最少的了解。
迪米特法则针对的是“低耦合高内聚”这一基本的编程原则。如果一个类尽量只使用自身必须使用的类(方法参数、类成员、方法返回值等)这样就可以避免使用一些不必要的类,减少了与其他类的耦合度


单一职责原则告诉我们实现类要职责单一;
里氏替换原则告诉我们不要破坏继承体系;
依赖倒置原则告诉我们要面向接口编程;
接口隔离原则告诉我们在设计接口的时候要精简单一;
迪米特法则告诉我们要降低耦合。
而开闭原则是总纲,他告诉我们要对扩展开放,对修改关闭。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值