Java设计模式
文章平均质量分 96
设计模式(Design pattern)代表了最佳的实践,学会设计模式,让你的代码更有力量
<br>
<center><a href="https://www.jianshu.com/u/12911fc0afc5"><b><font color="red">欢迎关注个人简书《一个程序猿的白日梦》</font></a></center>
<br>
<center><img src="https://img-blog.csdnimg.cn/20191022141206232.jpg" width="139" height="139" title="公众号:一个程序猿的白日梦"></center>
<br>
<center>欢迎扫码关注公众号“一个程序猿的白日梦”(时常放干货)</center>
<br>
<center><b><font color="red">From Zero To Hero</font></b></center>
<br>
方才coding
欢迎关注公众号【方才编程】
展开
-
java设计模式总结篇——首读
目录一、如何学习设计模式二、7种常见的设计原则三、设计模式总览一、如何学习设计模式如何学习设计模式 1、该设计模式的意图是什么? 1)问题描述【待解决的问题是什么】 2)前提条件【在何种环境或约束条件下使用】 3)解法【如何解决】 4)效果【有哪些优缺点】 2、它要解决的问题是什么? 3、它是如何解决的? 4、什么时候(情况下)使用...原创 2019-10-29 17:13:14 · 523 阅读 · 0 评论 -
访问者模式——元素的执行算法随着访问者改变而改变
目录一、基础简介1、定义2、使用场景3、优缺点4、模式结构分析二、实例实现1、实例场景2、Element(抽象元素)3、ConcreteElement(具体元素)4、Visitor(抽象访问者)5、双分派技术6、ConcreteVisitor(具体访问者)7、ObjectStructure(对象结构):对象结构是一个元素的集合8、客户...原创 2019-10-28 17:43:52 · 211 阅读 · 0 评论 -
解释器模式——用得很少,但还是要了解哈
目录一、基础简介1、定义2、使用场景3、优缺点4、模式结构分析二、实例实现1、实例场景2、AbstractExpression(抽象表达式)3、NonterminalExpression(非终结符表达式)4、TerminalExpression(终结符表达式)5、Context(环境类):环境类又称为上下文类6、客户端8、结果展示一、基础简...原创 2019-10-28 14:58:37 · 744 阅读 · 0 评论 -
享元模式——减少创建对象的数量
目录一、基础简介1、定义2、使用场景3、优缺点4、模式结构分析二、实例实现1、实例场景2、“五子棋”:Flyweight(抽象享元类)3、外部状态类4、白棋 / 黑棋:ConcreteFlyweight(具体享元类)5、坏了的棋子:UnsharedConcreteFlyweight(非共享具体享元类)6、五子棋加工厂:FlyweightFacto...原创 2019-10-25 16:46:10 · 665 阅读 · 0 评论 -
中介者模式——解决“依赖关系结构混乱”问题
目录一、基础简介1、定义2、使用场景3、优缺点4、模式结构分析二、实例实现1、实例场景2、房屋中介:抽象中介者(Mediator)角色3、链家:具体中介者(ConcreteMediator)角色:维护同事的交互关系4、链家的顾客:抽象同事类(Colleague)角色5、委托链家卖房和找链家买房的顾客:具体同事类(Concrete Colleague)角...原创 2019-10-24 18:47:02 · 661 阅读 · 0 评论 -
职责链模式(责任链模式)——提供系统的灵活性
目录一、基础简介1、定义2、使用场景3、优缺点4、模式结构分析二、实例实现1、实例场景2、Request :请求类3、抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接4、具体处理者(Concrete Handler)角色:实现抽象处理者的处理方法5、客户类(Client)角色:创建处理链,并向链头的具体处理者对象提...原创 2019-10-24 16:11:27 · 542 阅读 · 0 评论 -
命令模式——将“请求”与“执行者”解耦
目录一、基础简介1、定义2、使用场景3、优缺点4、模式结构分析二、实例实现1、实例场景2、“服务员”:调用者(Invoker):要求该命令执行这个请求3、“菜单”:抽象命令类(Command):声明执行操作的接口4、“具体的菜品”:具体命令类(ConcreteCommand):创建一个具体命令对象并设定它的接收者5、“厨师”:接收者(Receive...原创 2019-10-24 10:24:57 · 351 阅读 · 0 评论 -
桥接模式——合成/聚合复用原则的最佳实践
目录一、基础简介1、定义2、使用场景3、优缺点4、模式结构分析二、实例实现1、实例场景分析2、Abstraction(抽象类)3、RefinedAbstraction(扩充抽象类)4、Implementor(实现类接口)5、ConcreteImplementor(具体实现类)6、客户端7、结果展示一、基础简介1、定义将抽象部分与实现...原创 2019-10-22 11:54:49 · 286 阅读 · 0 评论 -
单例模式——一个类只有一个实例
目录一、基础简介1、定义2、使用场景3、优缺点4、模式分析二、代码实现1、sington类2、代码分析一、基础简介1、定义保证一个类仅有一个实例,并提供一个全局访问点2、使用场景1、要求生产唯一序列号。 2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。 3、创建的一个对象需要消耗的资源过多,比如 I/O 与数据...原创 2019-10-21 17:26:00 · 2866 阅读 · 2 评论 -
迭代器模式——顺序访问集合对象
目录一、基础简介1、定义2、使用场景3、优缺点4、模式结构分析二、实例实现1、抽象迭代器(Iterator)角色2、具体迭代器(Concretelterator)角色3、抽象聚合(Aggregate)角色4、具体聚合(ConcreteAggregate)角色5、客户端6、结果展示一、基础简介1、定义提供一种方法顺序访问一个聚合对象的各个...原创 2019-10-21 16:16:32 · 581 阅读 · 0 评论 -
组合模式——一致地使用多个对象
目录一、基础简介1、定义2、使用场景3、优缺点4、模式结构解析二、模式实例实现1、场景2、Component 是组合中的对象声明接口:抽象公司类3、Composite 定义有枝节点行为,用来存储子部件:具体公司类4、Leaf 在组合中表示叶子结点对象,叶子结点没有子结点5、客户端6、结果展示一、基础简介1、定义将对象组合成树形结构以表示...原创 2019-10-19 18:34:34 · 519 阅读 · 0 评论 -
备忘录模式——让你有后悔药吃
目录一、基础简介1、定义2、使用场景3、优缺点4、模式结构分析二、模式实例1、Originator(发起人)2、Memento(备忘录)3、Caretaker(管理者)4、客户端5、结果一、基础简介1、定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。便于以后将该对象恢复到原先保存的状态2、使用场景...原创 2019-10-18 17:53:31 · 173 阅读 · 0 评论 -
适配器模式——英语不好?找个翻译就行了
目录一、基础简介1、定义2、使用场景3、优缺点4、适配器模式结构分析二、代码实现1、Target(目标抽象类):目标抽象类定义客户所需接口2、Adaptee(适配者类):适配者即被适配的角色3、Adapter(适配器类):作为一个转换器4、客户端测试5、结果一、基础简介1、定义将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由...原创 2019-10-18 16:38:45 · 342 阅读 · 0 评论 -
状态模式——一个状态一个行为
目录一、基础简介1、定义2、使用场景3、优缺点4、模式结构二、实例的代码实现1、State类,抽象状态类2、ConcreteStateA 具体状态类3、Context 维护一个ConcreteState子类的实例4、客户端5、结果一、基础简介1、定义允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。2、使用场景...原创 2019-10-17 16:22:07 · 304 阅读 · 0 评论 -
观察者模式——消息订阅模式?
目录一、基础简介1、定义2、使用场景3、优缺点4、模式结构二、代码实例1、UML类图2、Subject抽象目标类:通知者3、ConcreteSubject 具体通知者4、Observer:抽象观察者5、ConcreteObserver:具体观察者6、客户端测试7、结果分析一、基础简介1、定义定义了一种一对多的依赖关系,让多个观察者...原创 2019-10-16 15:42:52 · 605 阅读 · 0 评论 -
构建者模式——让复杂对象的创建更简单
目录一、基础简介1、定义2、使用场景3、优缺点4、UML类图二、Builder模式的实例1、实例描述2、Product类2、Builder3、ConcreteBuilder 类 :4、Director类5、客户端6、构建结果一、基础简介1、定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示2、使用场景...原创 2019-10-14 20:50:35 · 646 阅读 · 0 评论 -
外观模式——让生活看起来更简单
目录一、基础简介1、定义2、使用场景3、优缺点4、结构图二、“买房”的外观模式实例1、“买房”的过程图2、SubSystem 子系统角色3、Facade4、Client_Facade5、结果一、基础简介1、定义为子系统中的一组接口提供一个一致的界面;定义一个高层接口,使得这一子系统更加容易使用2、使用场景1、为复杂的模块或子...原创 2019-10-14 15:50:28 · 151 阅读 · 0 评论 -
模板方法——让重复更简单
目录一、简介1、定义2、使用场景3、应用实例4、优缺点二、具体实现1、UML类图2、示例场景3、实例的UML类图4、LogTemplate5、DeleteLog6、UpdateLog7、Client_Template客户端8、实例运行结果一、简介1、定义定义一个操作中的算法逻辑,而将一些步骤延迟到子类中。(子类可以不改变一个...原创 2019-10-14 11:04:42 · 389 阅读 · 0 评论 -
原型模式,一个无用的模式?
目录一、简介1、定义2、使用场景3、模式分析4、优缺点二、实现1、UML类图2、Prototype3、ConcretePrototypeA4、ConcretePrototypeB5、PrototypeCache6、Client_Prototype三、原型模式分析1、问题描述2、Person_Prototype3、Cilent客户端...原创 2019-10-12 15:53:29 · 548 阅读 · 0 评论 -
“策略模式”原来如此简单
目录一、策略模式简介1、定义2、使用场景3、优缺点3、UML类图二、策略模式实现1、策略角色2、具体策略角色3、Context上下文4、Client客户端5、分析三、策略模式与简单工厂结合1、改造后的context2、改造后的客户端一、策略模式简介1、定义策略模式(Strategy):将一组算法封装起来,使其可以相互替换;...原创 2019-10-11 15:19:47 · 167 阅读 · 1 评论 -
五分钟带你读懂UML类图
目录先看下面这张类图,包括了UML类图的基本图示法1、类的表示2、接口的表示3、继承关系4、实现接口5、关联关系6、聚合关系7、合成(组合)关系8、依赖关系先看下面这张类图,包括了UML类图的基本图示法1、类的表示首先看那个‘动物’矩形框,它就代表一个类(Class)。类图分三层,第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层...原创 2019-10-10 17:03:51 · 1664 阅读 · 1 评论 -
java的反射机制(从入门到使用)
目录一、反射的概述二、查看Class类在java中的api详解(1.7的API)三、反射的使用反射的方法汇总:1、获取Class对象的三种方式2、通过反射获取构造方法并使用3、获取成员变量并调用4、获取成员方法并调用5、反射main方法6、反射方法的其它使用之—通过反射越过泛型检查7、反射方法的其它使用之二利用反射读取配置文件一、反射的概述...原创 2019-06-12 19:47:55 · 546 阅读 · 0 评论 -
Java设计模式——04代理模式
目录一、代理模式简介1、代理模式的定义2、组成3、优缺点二、静态代理1、静态代理的实例2、静态代理的优缺点三、动态代理(一)jdk动态代理模式>1)模式要点分析>2)反射实例>3)动态代理源码分析>4)动态代理实例>5)InvocationHandler分析>6)总结下动态代理的流程:(二)cgl...转载 2019-04-27 17:59:57 · 688 阅读 · 0 评论 -
Java设计模式——03装饰者模式
目录一、装饰者模式基本介绍1、什么是装饰者模式2、装饰者模式的优缺点3、使用场景4、装饰者模式的类图二、装饰者模式的实现1、需求描述2、具体实现3、总结一、装饰者模式基本介绍1、什么是装饰者模式装饰模式(Decorator)指的是在不改变原类文件和不使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。...原创 2019-04-13 16:06:17 · 427 阅读 · 0 评论 -
Java设计模式——02工厂模式
目录原文讲解一、工厂模式概述 1.1为什么要用工厂模式? 1.2体验工厂模式 1.3使用工厂方法的好处二、如何使用工厂模式 2.1工厂方法模式 2.2简单/静态工厂模式(最常用) 2.3抽象工厂模式三、总结写在前面:作为一个刚入行...转载 2019-04-12 21:07:38 · 443 阅读 · 0 评论 -
Java设计模式——01单例模式(这是我看过最完美的讲解)
目录1、什么叫单例模式2、模式的作用及应用场景?3、单例模式的优缺点二、单例模式的java实现1、最简单的实现2、性能优化--lazy loaded3、同步4、又是性能5、从源头检查6. 两种解决方案(最后向大神致敬!!!!)1、什么叫单例模式简单来说,就是在整个应用中保证一个类只有一个实例存在。2、模式的作用及应用场景?作用:解决一个全...转载 2019-10-21 17:30:02 · 1387 阅读 · 3 评论 -
面向对象七大设计原则
目录一、单一职责原则1、定义二、开闭原则1、定义三、依赖倒转原则1、定义四、里氏代换原则1、定义五、迪米特法则1、定义六、合成/聚合复用原则1、定义七、接口隔离原则1、定义 ------------概念先行,后续持续更新----------一、单一职责原则1、定义单一职责原则是最简单的面...原创 2019-09-03 20:22:25 · 185 阅读 · 0 评论