设计模式-学习

设计模式主要包含三个部分:场景(上下文)、问题、解决方案。


设计模式包含五个要素:名称、环境、问题、解决方案、效果。


模式可以分为创建型、结构型、行为型三种。


可扩展性是由开闭 原则、里氏代换原则、依赖倒转原则和组合 /聚合复用原则所保证


几个原则的分析:
  1. 开闭原则:“Software entities should be open for extension,but closed for modification”。对扩展开放、对修改关闭。目标是做到不修改现有代码的基础上,扩展系统的功能。实现开闭原则的关键是“抽象”,对系统的行为进行尽可能的抽象,使得抽象层可以对应一个或多个具体的行为实现。
  2. 里氏代换原则(LSP):“Subtypes must be substitutable for their base types”,也即子类必须可替换他们的基类,替换之后,系统的功能没有发生改变。该原则是研究继承的原则:如果实现的继承关系不满足该原则,则该关系不成立。相关的实例有:正方形不是长方形,鸵鸟不是鸟等。对第一个实例,可考虑将设置长度、宽度的方法合并成一个方法。对于第一个实例,可考虑改进鸟类的设计:可参考Head Frist design pattern。
  3. 依赖倒置原则:目的在改变传统的过程化设计方法中,高层次模块依赖低层次模块,抽象层依赖于具体层的方式。依赖倒置目的即将该方式进行倒转。抽象不应该依赖于细节,也即“需要针对接口编程”。接口是实现插件化的关键,提升系统的灵活性。
  4. 组合聚合复用原则:“ Favor object composition over class inheritance”,尽量使用组合聚合,而不是继承。基于面向对象编程,依赖于抽象而不是具体的原则,假定类A的功能在新的B类中需要使用,可选择两种方式:1)使得A成为B的一部分(组合聚合方式);2)使得B继承于A。如果A本身没有进行相应的抽象,则方法2就带来了依赖和耦合的问题。

单例模式:其典型实现有第一次调用实例化和类加载就实例化两种差别。

装饰模式:动态给对象添加一些额外的职责,例如JAVA IO API 就是采用了该模式。

 

适配器模式:对类的接口进行变换,使得原本不匹配的两者之间能一起工作。在生产系统中,广泛采用的工作流相关的entryadapter,forwardadapter等。

模板模式:设计一个抽象类,将部分逻辑以具体方法的形式实现,同时申明一些抽象方法迫使子类实现剩余的逻辑。这样,子类可以替换父类的可变部分,但改变不了模板方法所代表的顶级逻辑。

门面模式:外部与子系统的通信,必须通过一个统一的门面对象进行。这样可以简化子系统的接口同时提升子系统的独立性和可

代理模式:给原始对象提供一个代理,由代理类来控制对原对象的引用。(代理和门面的差别是:代理目的是控制原对象的引用,门面目的是提供统一的接口,一般来说,门面会需要统筹多个功能对象)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值