前言:
视频教程:狂神说Java之通俗易懂的23种设计模式
什么是设计模式/p>
- 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。
它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的
解决方案==> 一种思维,一种态度,一种进步- 1995年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软
件的基础》一书,共收录了23种设计模式,从此树立了软件设计模式领域的里程碑,人称 【GoF设计模式】
设计模式分类 具体模式 创建型模式:
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。?单例模式、?工厂模式、?抽象工厂模式、?建造者模式、原型模式 结构型模式:
这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式 行为型模式:
这些设计模式特别关注对象之间的通信。模板方法模、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式
建造者模式:
- 建造者模式也属于创建型模式:它提供了一种创建对象的最佳方式。
- 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
- 主要作用:在用户不知道对象的建造过程和细节的情况下,就可以直接创建复杂的对象
- 用户只需要给出指定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)
- 生活种的例子:
- 工厂(建造者模式):负责制造汽车 (组装过程和细节在工厂内)
- 汽车购买者(用户):你只需要说出你需要的型 ,(对象的类型和内容),然后直接购买就可以使用了(不需要知道汽车是怎么组装的(车轮、车门、发动机、方向盘等等))
例1:造房子
-
经典例子:造房子
顺便学习一波:“设计模式起源于建筑学”这句话怎么解释/p>
例2:点套餐
- 上面示例是Builder模式的常规用法,导演类Director在Builder模式中具有很重要的作用:
- 它用于指导具体构建者如何构建产品,控制调用先后次序,并向调用者返回完整的产品类,
- 但是有些情况下需要简化系统结构
- 可以把Director和抽象建造者进行结合.
- 通过静态内部类方式实现零件无序装配构造,这种方式使用更加灵活,更符合定义。
- 内部有复杂对象的默认实现,使用时可以根据用户需求自由定义更改内容,并且无需改变具体的构造方式,就可以生产出不同复杂产品
- 比如:麦当劳的套餐,服务员(具体建造者)可以随意搭配任意几种产品(零件)组成一款套餐(产品),然后出售给客户。
- 比第一种方式少了指挥者,主要是因为第二种方式把指挥者交给用户来操作,使得产品的创建更加简单灵活。
//服务员:public class Worker extends Builder { private Product product; public Worker(){product = new Product(); } @Override Builder builderBurger(String name) {product.setBuilderBurger(name);return this; } @Override Builder builderCola(String name) {product.setBuilderCola(name);return this; } @Override Builder builderFries(String name) {product.setBuilderFrie(name);return this; }
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!
- 上面示例是Builder模式的常规用法,导演类Director在Builder模式中具有很重要的作用: