设计模式开篇

【每周一文】作为一名当代码农,看到自己代码中的ifelse随处可见,给人的第一感觉是不整洁,逻辑不清晰,没有很好的遵循程序设计的原则;想着手去修复这些问题时,发现力不从心,这才意识到设计模式的重要性,所以开始接下来的“不归路”吧。

开篇

谁发明了设计模式?
设计模式的概念最早是由克⾥斯托佛·亚历⼭⼤在其著作 《建筑模式语⾔》 中⾸次提出的。 本书介绍了城市设计的 “语⾔”,提供了253个描述城镇、邻⾥、住宅、花园、房间及⻄部构造的模式, ⽽此类 “语⾔” 的基本单元就是模式。后来,埃⾥希·伽玛约翰·弗利赛德斯拉尔夫·约翰逊理查德·赫尔姆 这四位作者接受了模式的概念。 1994 年, 他们出版了 《设计模式: 可复⽤⾯向对象软件的基础》 ⼀书, 将设计模式的概念应⽤到程序开发领域中。
——小傅哥《重学 Java 设计模式》

一、设计的六大原则

  • 单一职能原则(Single Responsibility Principle,SRP)
    定义:一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因;
    理解:⼀个类和⽅法只做⼀件事;
  • 开闭原则(Open-Closed Principle,OCP)
    定义: 一个软件实体应当对扩展开放,对修改关闭。即软件实体(一个软件模块、一个由多个类组成的局部结构或一个独立的类)应尽量不修改原有代码的情况下进行扩展;
    理解:抽象架构,扩展实现;
  • 里氏代换原则(Liskov Substitution Principle,LSP)
    定义:所有引用基类(父类)的地方必须能透明地使用其子类的对象;
    理解:多态,⼦类可扩展⽗类;
  • 依赖倒转原则(Dependency Inversion Principle,DIP)
    定义:抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程;
    理解:细节依赖抽象,下层依赖上层;
  • 接口隔离原则(Interface Segregation Principle,ISP)
    定义:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些不需要的接口;
    理解:建⽴单⼀接⼝;
  • 迪米特法则(Law of Demeter)/ 最少知道原则(LeastKnowledge Principle,LKP)
    定义: 一个软体实体应当尽可能少地与其他实体发生相互作用。
    理解:最少知道,降低耦合。

二、设计模式的分类

创建型模式:这类模式提供创建对象的机制, 能够提升已有代码的灵活性和可复⽤性。

  • 单例
  • 工厂方法
  • 抽象工厂
  • 原型
  • 建造者
    结构性模式:这类模式介绍如何将对象和类组装成较⼤的结构, 并同时保持结构的灵活和⾼效。
  • 适配器
  • 桥接
  • 组合
  • 装饰
  • 外观
  • 享元
  • 代理
    行为模式:这类模式负责对象间的⾼效沟通和职责委派。
  • 责任链
  • 命令
  • 迭代器
  • 中介者
  • 备忘录
  • 观察者
  • 状态
  • 策略
  • 模板方法
  • 访问者

该文章仅学习记录使用,参考资源:
设计模式六大原则
《重学 Java 设计模式》——小傅哥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值