
设计模式
文章平均质量分 62
设计模式
闲猫
大道至简
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式.结构化记忆和对比
记不住设计模式? 看看本文,只需要根据名称记住要解决的问题和场景就能记住了设计 全部24个设计模式 介绍,以及相似设计模式的对比原创 2022-04-25 07:13:28 · 153 阅读 · 0 评论 -
设计模式.中介者模式Mediator
中介者模式(Mediator pattern)集中相关对象之间复杂的沟通和控制方式,使得这些对象不必相互明显引用将多对多,转换为1对多模型原创 2022-04-25 07:13:39 · 297 阅读 · 0 评论 -
设计模式.状态模式Context StateConcrete State (状态改变 后边自然会做操作,观察者是关注状态变更的事件后自己完成操作)
定义允许一个类在其内部状态改变时,改变它的行为。状态成为了类。修改类状态同时出发其他操作。场景状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转译到表现不同状态的一系列类当中,可以把复杂的判断逻辑简化。简单来说:1. 一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。2. 一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。类图上下文环境(Context):它定义了客户程序需要的接口并维护一个具体状态原创 2022-04-25 07:13:50 · 337 阅读 · 0 评论 -
设计模式.备忘录模式 快照模式(Snapshot Pattern)或Token模式
定义备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一同使用。结构发起者角色(Originator):负责创建一个备忘录用以记录当前时刻它的内部状态,并可以使用备忘录恢复内部状态。备忘录角原创 2022-04-24 11:20:10 · 501 阅读 · 0 评论 -
设计模式.命令模式Commond
定义命令也可以理解为请求降低 命令发送者和命令执行者 的耦合度。想想网站,你发送一个HTTP请求,你需要知道是哪个Controller执行吗?你可能知道后台谁来处理的吗?这不就是命令模式。命令模式(Command Pattern):将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。问题某桌面系统,设置快捷键F1功能为 打开原创 2022-04-24 11:11:39 · 545 阅读 · 0 评论 -
设计模式.责任链模式 Responsibility Pattern
定义责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。场景有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。 你想在不明确指定接受者的情况下,想过个对象中的一个提交一个请求。 可处理一个请求的对象集合应该被动态指定。类图说明:.原创 2022-04-24 11:01:50 · 356 阅读 · 0 评论 -
设计模式.迭代模式 Iterator
速记ArraylistIterator遍历方法定义迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。场景(1)访问一个聚合对象的内容而无需暴露它的内部表示(2)支持对聚合对象的多种遍历(3)为遍历不同的聚合结构提供一个统一的接口类图实现(com.haiwei.behavior.iterator) 迭代器接口public interface HaiweiIterator { boolea.原创 2022-04-24 10:55:56 · 168 阅读 · 0 评论 -
设计模式.策略模式 Strategy
设计模式.策略模式 Strategy Pattern将一组行为进行封装,对应为一个策略。比如一级战备,二级战备。其实对应的是一组行动。原创 2022-04-24 10:53:21 · 122 阅读 · 0 评论 -
设计模式.享元模式(大量细粒度对象场景)
享元模式 共享元素Flyweight Pattern飞 重量 模式,能飞起的重量就不重解决 大量细粒度的对象的复用,防止多次new和对象回收内部状态Intrinsic State 外部状态Extrinsic State 享员池 FlyweightPool原创 2022-04-24 10:38:45 · 253 阅读 · 0 评论 -
设计模式.组合模式(整体和部分关系, 树和Node,透明组合和完全组合)
设计模式.组合模式(整体和部分关系, 树和Node,透明组合和完全组合)Java 设计模式UML 聚合和组合原创 2022-04-24 10:26:14 · 386 阅读 · 0 评论 -
设计模式.外观模式Facade
外观设计模式 门面设计模式 设计模式 java Facade 是对复杂内部系统的逻辑的屏蔽,暴露一个友好的外观原创 2022-04-24 10:04:29 · 383 阅读 · 2 评论 -
设计模式.代理模式
JDK代理,CGLib代理 设计模式 代理设计模式 Proxy Java原创 2022-04-24 09:57:17 · 247 阅读 · 0 评论 -
设计模式.装饰者模式 Decorator
设计模式 装饰者模式 Decorator 类增加 模板设计模式原创 2022-04-24 09:51:13 · 171 阅读 · 0 评论 -
设计模式.适配器(接口转换,分为:类,对象,接口)
设计模式 适配器 类适配器 对象适配器 接口适配器原创 2022-04-25 07:13:59 · 571 阅读 · 0 评论 -
设计模式.状态模式(修改状态触发其他操作)
定义允许一个类在其内部状态改变时,改变它的行为。状态成为了类。修改类状态同时出发其他操作。场景状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转译到表现不同状态的一系列类当中,可以把复杂的判断逻辑简化。简单来说:1. 一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。2. 一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。类图上下文环境(Context):它定义了客户程序需要的接口并维护一个具体状态原创 2022-04-22 18:03:03 · 346 阅读 · 5 评论 -
设计模式.桥接模式(抽象化与实现化解耦 JDBC)
定义这里摘抄一份他处的概念,你可以不必理会,先看下面得讲解与实例,然后返回来理解概念,不然抽象的概念会让你崩溃...桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。比如:JDBC和mysql的驱动包DriverManager一样,Jdbc定义了一套接口,实际使用的时候需要先注册MySQL的驱动包,然后根据JDBC来的接口来操作。这时你代码依赖的是JDBC的接口,而不是具体mysql驱原创 2022-04-22 17:33:16 · 808 阅读 · 0 评论 -
设计模式.单例( 私有化构造,静态内部类(反射可以获取到),Enum(JVM保证) 懒汉 饿汉 双重校验 )
使用场景现实中的单例:系统可以有多个打印任务,但只能有一个打印管理器,否则打印机就不知道打印谁的信息。一个系统只能有一个任务管理器,如果有多个任务管理器,如果这些窗口显示的内容一致就意味着浪费资源,如果显示的内容不一样表示同一时刻系统有两个不同的状态。代码中的单例:需要写一个解析XML文件类,且这个类使用频繁。我们每次使用就得实例化一个对象,浪费时间空间,加重了GC的负担。上述问题解决:在逻辑和代码中只允许实例化一个对象,每次使用都得使用这一个对象。单例模式就是:一个..原创 2022-04-22 17:25:34 · 356 阅读 · 2 评论 -
设计模式.原型设计模式(Clone方法 浅拷贝 深拷贝)
@Override protected User clone() throws CloneNotSupportedException { // return new User(this.getName(),address);//浅拷贝 return new User(this.getName(),(Address)address.clone());//深拷贝 }clone一个对象定义创建一个对象相当复杂,或者对象中的值很多,创建后需要重复...原创 2022-04-22 16:27:00 · 506 阅读 · 0 评论 -
设计模式.构建器模式(Jwt.builder().build())
Jwts.builder()//写入账号状态.claim(STATUS, jwtSetting.getStatus())// 写入认证对象的权限集.claim(PLATFORM, jwtSetting.getPlatform())// 写入认证账号显示名称.claim(SHOWNAME, jwtSetting.getShowName())// 写入认证账户名.setSubject(jwtSetting.getLoginName())// 写入认证对象具体信息.claim(ACCOUNT.原创 2022-04-22 16:17:01 · 3968 阅读 · 0 评论 -
设计模式.工厂设计模式(简单工厂(判断条件返回不同对象),工厂方法(一个Factory一个类),抽象工厂(将工厂方法组合起来,如电脑启动功能,需要CPU,SSD对象挨个启动))
解决的问题解决创建对象简单工厂模式两个类集成同一个接口,他们的实现不同。Factory类根据不同的方法或者参数不同来区别创建不同的类。同样Factory创建对象的方法可以有静态和非静态两种选择。实现:见com.haiwei.create.simplefactory分析:Client依赖的是Factory类,而不是接口,违反依赖倒置原则,导致扩展困难。扩展:如果新增一种类,ImageSender,那么这时候就需要修SenderFactory,或者增加方法getImageSend原创 2022-04-21 10:29:43 · 301 阅读 · 0 评论 -
设计模式.怎么学设计模式 原则
定义 在某些场景下,针对某类问题的某种通用的解决方案 设计模式 区别于架构模式和惯例 -架构模式 是软件的架构风格,架构维度 -设计模式 是软件设计中的问题的通用解决方案,设计维度 -惯例 是 特定语言中 代码的使用技巧,编码维度原则开闭原则 对扩展开放,对修改关闭单一职责原则 一事一地里氏替换原则 子类可以替代父类 重写会破坏这个...原创 2022-04-21 09:12:49 · 171 阅读 · 0 评论 -
设计模式.模板设计模式(Abstract主流程调用来,预留抽象方法给子类实现)
画类图的设计模式你能记住吗?画类图的设计模式你能知道什么情况下用吗?我不画类图,我不讲框架,我只讲故事。1. 场景关键字:组件我是个学电路的,我呢想造个模块卖出去,比如GPS模块,别人拿到我的模块就能拿到经纬度数据,我怎么办呢?我总不能把电路图给别人吧,那谁还买我的模块呢! 我就把自己的电路封装到这么一个集成电路中,只给别人流出接口即可,比人想用你的模块,就得实现你的接口。...原创 2018-07-21 12:03:12 · 356 阅读 · 0 评论