前言:
视频教程:狂神说Java之通俗易懂的23种设计模式
什么是设计模式?
- 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。
它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的
解决方案==> 一种思维,一种态度,一种进步- 1995年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软
件的基础》一书,共收录了23种设计模式,从此树立了软件设计模式领域的里程碑,人称 【GoF设计模式】
设计模式分类 具体模式 创建型模式:
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。⌛单例模式、⌛工厂模式、⌛抽象工厂模式、⌛建造者模式、原型模式 结构型模式:
这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式 行为型模式:
这些设计模式特别关注对象之间的通信。模板方法模、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式
建造者模式:
- 建造者模式也属于创建型模式:它提供了一种创建对象的最佳方式。
- 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
- 主要作用:在用户不知道对象的建造过程和细节的情况下,就可以直接创建复杂的对象
- 用户只需要给出指定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)
- 生活种的例子:
- 工厂(建造者模式):负责制造汽车 (组装过程和细节在工厂内)
- 汽车购买者(用户):你只需要说出你需要的型号,(对象的类型和内容),然后直接购买就可以使用了(不需要知道汽车是怎么组装的(车轮、车门、发动机、方向盘等等))
例1:造房子
-
经典例子:造房子
顺便学习一波:“设计模式起源于建筑学”这句话怎么解释?
假设造房简化为如下步骤:
房子不管大小都是大致步骤建造,满足了其定义:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
- 打地基
- 钢筋工程
- 砌砖
- 铺电线
- 粉刷
“如果”要盖一座房子,首先要找一个建筑公司或工程
开发商–>承包商(指挥者)----> 承包商指挥工人(具体建造者)------->过来造房子(产品)===>最后验收.
//抽象的建造者:定义造房子的方法步骤
//也可以看作工人的技能:
public abstract class Bulider {
//打地基
abstract void buildFoundation();
//钢筋工程
abstract void buildRebar();
//砌砖
abstract void buildBrick();
//铺电线
abstract void buildWire();
//粉刷
abstract void buildWall();
//完工:得到房子
abstract Product getProduct();
}
//产品:工人最后生产的房子
public class Product {
//一个房子建成需要的步骤:
private String buildFoundation; //打地基
private String buildRebar; //钢筋工程
private String buildBrick; //砌砖
private String buildWire; //铺电线
private String buildWall; //粉刷
//...
//中间省略 对属性的set方法,以及toString方法
//...
}
//具体建造者:工人
public class