随笔分类 -  设计模式

1
设计模式-备忘录模式
摘要:什么叫备忘录?两个字,回滚。备忘录模式可以记录一个对象的内部状态,当需要的时候可以将对象恢复到之前的状态 备忘录模式有三个角色:发起者,备忘录,管理者。简而言之,发起者对对象发生改动的时候自己备份一份备忘录交给管理者。每次发起者需要恢复数据的时候找管理者,管理者找出备忘录的数据交给发起者。 发起者只 阅读全文
posted @ 2020-04-28 17:27 Vinlen 阅读(120) 评论(0) 推荐(0)
设计模式-迭代器模式
摘要:迭代这个词不陌生,List,Set,Map等等都有迭代器。所谓的迭代器就是访问该聚合对象中的各个元素。比如链表遍历。如果将该链表的创建和遍历都放在一个类中那肯定是不行的,如果要更改遍历方法就得修改源码,这违反了开闭原则。如果类不提供遍历方法,由用户自己实现也是不可以的,因为这样会暴露聚合类的内部表示 阅读全文
posted @ 2020-04-28 16:40 Vinlen 阅读(139) 评论(0) 推荐(0)
设计模式-中介者模式
摘要:在现实中,你要和天南海北的朋友聊天需要中介,QQ,微信,信息等等这些都是中介工具。中介工具的作用就是把同一类的人放在一起(群),一个发送消息的时候,需要通知其他人 java中的中介者模式有四个角色:抽象中介者,具体抽象者,抽象角色,具体角色。 抽象中介者(群的概念) abstract class M 阅读全文
posted @ 2020-04-28 15:58 Vinlen 阅读(166) 评论(0) 推荐(0)
设计模式-观察者模式
摘要:在现实生活中,一个对象的改变会引起其他许多对象的改变,比如商品降价了,很多人都会开心,明天要下雨,很多人会烦躁等等。在java里就是一对多的依赖关系,当某个对象发生改变时,需要通知所有依赖于他的对象更新。这种模式有的时候也被叫做订阅-发布模式。 观察者模式有四种角色:抽象主题,具体主题,抽象观察者, 阅读全文
posted @ 2020-04-28 15:29 Vinlen 阅读(119) 评论(0) 推荐(0)
设计模式-状态模式
摘要:人愤怒的时候会想打人,高兴的时候想笑,人的状态执行了不同的方法,程序也是一样,程序也有状态。当一个方法里需要多个if else来判断逻辑的时候就要注意到,当对象的状态很多时,程序会变得很复杂,而且添加新状态就会增加新的if else语句,大大违反了开闭原则 我们可以使用状态模式,来为程序定义不同的状 阅读全文
posted @ 2020-04-28 11:40 Vinlen 阅读(107) 评论(0) 推荐(0)
设计模式-责任链模式
摘要:最典型的就是击鼓传花了,一个传一个,等到适合的人接到。在程序里就是请求者不可以和多个接收者耦合在一起,将所有请求的处理者根据前一对象记住下一个对象的引用形成一条责任链,将请求沿着责任链传递,一直到负责处理请求的对象出现 责任链模式有三个角色,抽象处理者,具体处理者,客户类。抽象处理者定义一个处理请求 阅读全文
posted @ 2020-04-28 11:01 Vinlen 阅读(115) 评论(0) 推荐(0)
设计模式-策略模式
摘要:先看一下策略模式的三个角色: 抽象策略:仅提供一个抽象方法,环境类调用抽象策略的方法,根据实际应用情况由适合的具体策略对象去实现 具体抽象:负责实现抽象策略定义的接口 环境类:环境类负责引用抽象策略,并交给客户端来使用。 简单来说就是客户端调用环境类,环境类调用抽象策略,具体的算法由不同的具体策略来 阅读全文
posted @ 2020-04-28 10:17 Vinlen 阅读(101) 评论(0) 推荐(0)
设计模式-组合模式
摘要:树枝和树干组成了树,就用树枝和树干来讲解一下组合模式。 一个组合模式有3种角色,抽象构件,类似于树干,定义了基本方法;树枝构件,用于管理树叶;树叶构件,用于具体实现。 先来看一个例子 学生: interface Student { void add(Student s); void remove(S 阅读全文
posted @ 2020-04-28 09:45 Vinlen 阅读(100) 评论(0) 推荐(0)
设计模式-享元模式
摘要:享元模式:相同的对象只保存一份,降低了因为大幅创建相同对象来对系统的额外开销 享元模式分为4个角色,非享元对象,抽象享元角色,具体享元角色,享元工厂。非享元角色是享元角色的一个参数,如果需要经常需要调用非享元对象,可能会创建很多的享元角色,这时候可以从享元工厂里获取具体的享元角色,使用一个map存放 阅读全文
posted @ 2020-04-28 08:57 Vinlen 阅读(115) 评论(0) 推荐(0)
设计模式-外观模式
摘要:先举例子:你去医院看病,普通的流程为挂号,看病,拿药,打针等等一系列步骤,如果说看病的窗口挪了一下,那你的路程也要改变,这就违反了开闭原则,所以有了外观模式,对外有一个统一的接口,类似于你进医院把你的症状告诉那个人,他会替你去挂号看病拿药等等,你只需要等他的反馈。先来看例子 挂号 public cl 阅读全文
posted @ 2020-04-27 11:35 Vinlen 阅读(157) 评论(0) 推荐(0)
设计模式-桥接模式
摘要:有点难理解,主要有4个角色 抽象调用 具体调用 抽象实现 具体实现。大概的意思就是抽象调用调用抽象实现。由具体调用和具体实现来拓展功能 抽象实现 public interface Implemter { void implemt(); } 具体实现 public class ImplemterImp 阅读全文
posted @ 2020-04-27 11:12 Vinlen 阅读(110) 评论(0) 推荐(0)
设计模式-适配器模式
摘要:先举例子,安卓的耳机怎么插Ios的手机? 淘宝有转接头,也叫适配器。当一个类想和另一个无关的类一起工作就需要适配器 安卓的耳机 public interface Target { void work(); } ios的插孔 public class Adapte { public void adap 阅读全文
posted @ 2020-04-27 10:53 Vinlen 阅读(121) 评论(0) 推荐(0)
设计模式-代理模式
摘要:作为aop的实现技术支持,代理模式应该是最被人熟知的,代理模式用大白话来说,类似一个中介,可以进行方法的增强或者修改(Ps:我觉得静态代理模式和命令模式好像,命令模式也可以在具体命令类里调用接收者前后进行环绕增强,只不过无法修改方法只能进行拓展) 当我们不方便直接调用一个类的时候 可以使用代理模式, 阅读全文
posted @ 2020-04-27 10:23 Vinlen 阅读(101) 评论(0) 推荐(0)
设计模式-命令模式
摘要:一个比较简单的设计模式,主要有三种角色,请求者,中间者,接收者。将方法的请求和执行分隔开,两者之间通过中间对象来调用,为了方便拓展,需要将中间者抽象。 请求者类 public class Invoker { Command command; public Invoker(Command comman 阅读全文
posted @ 2020-04-27 09:08 Vinlen 阅读(100) 评论(0) 推荐(0)
设计模式-建造者模式
摘要:这个比较难理解,先看例子,你家里要装修,要打造一个家具,你爸和商场里的人说了要预定沙发 沙发的属性 public class Product { //沙发的底 private String partA;//沙发的靠枕 private String partB;//沙发的皮 private Strin 阅读全文
posted @ 2020-04-26 17:07 Vinlen 阅读(116) 评论(0) 推荐(0)
设计模式-抽象工厂模式(升级版工厂方法模式)
摘要:首先,需要了解一下java设计模式6大原则中的开闭原则:只对 拓展开放,修改关闭。也就是你可以继承我的类来进行拓展,但不能重写我的方法。 如果将方法比喻为工厂,对象成为产品,工厂模式就是调用固定的方法来创建固定的对象,但是如果想添加新产品的时候会违反开闭原则。所以要将工厂方法和产品抽象化,添加新产品 阅读全文
posted @ 2020-04-26 16:21 Vinlen 阅读(161) 评论(0) 推荐(0)
设计模式-原型模式
摘要:原型模式也是23种设计模式里比较简单的模式之一,一句话概括原型模式,复制粘贴。类似windows上的复制粘贴,可以帮你克隆出一个新的对象,但是又和之前的不等(地址不一样,没有引用同一个对象) public class Yuanxing implements Cloneable { public Yu 阅读全文
posted @ 2020-04-26 15:42 Vinlen 阅读(104) 评论(0) 推荐(0)
设计模式-单例模式
摘要:作为23种设计模式里最简单的设计模式之一,单例模式顾名思义该类只能有一个实例对象,普通的类都是可以直接new 类名()来创建。想要只有一个实例,那就只能由该例创建,如果该例对象已经存在,则无法再创建 单例模式分为懒汉模式和饿汉模式。懒汉模式是类加载的时候该实例还没有创建,需要手动调用方法创建。 pu 阅读全文
posted @ 2020-04-26 15:24 Vinlen 阅读(133) 评论(0) 推荐(0)
设计模式-装饰者
摘要:之前的模板方法虽然解决了代码多余的问题,但是缺点也是显而易见的,我只能被迫接收所有继承的,所以有了这第二个模式 装饰者模式 还是之前的业务逻辑,现在我可以这么写 public interface Command(){ public void excute(); } //一个类来执行输出日志 publ 阅读全文
posted @ 2020-04-23 11:54 Vinlen 阅读(94) 评论(0) 推荐(0)
设计模式-模板方法
摘要:如果现在有一个电商网站,用户需要购买购买一件商品,我们需要在用户购买商品前做一些其他的事情,比如记录日志,进行性能统计,权限检查等等。按照面向对象的设计模式,应该把常用的方法抽出来在业务逻辑前后进行调用。这样虽然也可以完成逻辑,但是那些与日志,安全,事务,性能统计的相关代码快把真正的代码淹没了,不仅 阅读全文
posted @ 2020-04-23 11:30 Vinlen 阅读(122) 评论(0) 推荐(0)

1