满堂花醉三千客,一剑霜寒十四州。这篇文章主要讲述设计模式基础入门相关的知识,希望能为你提供帮助。
设计模式基础
设计模式简介软件工程中,设计模式(design pattern)是对软件中普遍存在(反复出现)的各种问题,所提出的解决方案,是由Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人在1990年代冲工程建筑领域引入计算机科学的
设计模式解决问题
- 客户提出新功能 【使用设计模式软件具有更好的扩展性】
- 原公司程序员离职,项目接手【使用设计模式的代码更具有可维护性(可读性和规范性)】
设计模式的目的编写软件的过程中,程序面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性等多方面的挑战,设计模式用为让程序(软件)具有更好:
- 代码重用性
- 可读性
- 可扩展性
- 可靠性
- 使程序呈现高内聚、低耦合的特性
- 单一职责原则 (Single Responsibility Principle)
- 开放-关闭原则 (Open-Closed Principle)
- 里氏替换原则 (Liskov Substitution Principle)
- 依赖倒转原则 (Dependence Inversion Principle)
- 接口隔离原则 (Interface Segregation Principle)
- 迪米特法则(Law Of Demeter)
- 组合/聚合复用原则 (Composite/Aggregate Reuse Principle)
设计原则核心思想
:- 找出应用中可能需要变化之处,把它们独立出来,不要和哪些不需要变化的代码混在一起
- 针对接口编程,而不是针对实现编程
- 为了交互对象之间的松耦合设计而努力
- UML(Unified modeling language) (统一建模语言), 是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果
- UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等,如下图:
文章图片
依赖-dependency
public class PersonServiceBean
private PersonDao personDao;
public void save(Person person) public IDCard getIDCard(Integer personId)
return null;
public void modify()
Department department = new Department();
文章图片
泛化(继承)-Gerneralization
public abstract class DaoSupport
public void save(Object entity) public void delete(Object id)
文章图片
public class PersonServiceBean extends DaoSupport
实现-Realization
public interface PersonService
public void delete(Integer id);
public class PersonServiceBean implements PersonService
@Override
public void delete(Integer id)
文章图片
聚合-Aggregation
整体和部分可分割
public class Computer private Mouse mouse;
private Monitor monitor;
public void setMouse(Mouse mouse)
this.mouse = mouse;
public void setMonitor(Monitor monitor)
this.monitor = monitor;
文章图片
组合-Composite
整体和部分不可分割
public class Computer
private Mouse mouse = new Mouse();
private Monitor monitor = new Monitor();
文章图片
设计模式类型【设计模式基础入门】设计模式可以分为三种类型
● 创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。
● 结构型模式:把类或对象结合在一起形成一个更大的结构。
● 行为型模式:类和对象如何交互,及划分责任和算法。
类型 | 所包含设计模式 |
---|---|
创建型模式 | 单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式 |
结构型模式 | 适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式 |
行为型模式 | 模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、职责模式 |
推荐阅读
- Windows系统中,如何快速找到端口被占用的进程()
- 技术分享 | 被测系统架构与数据流分析
- Zookeeper - 会话管理和事务处理
- linux之Ansible快速入门
- Python 教程Matplotlib 数据类型汇总
- Clojure环境安装与QuickStart
- Springboot使用velocity模板引擎
- 交换两个数组的元素使之总和的差值最小
- Clojure使用Java方法