设计模式
介绍23种设计模式
$码出未来
~~~
展开
-
策略模式
策略模式定义策略模式(strategy):它定义了算法家族,分别封装起来,让这些算法之间可以随意替换,此模式的算法的变动,不会影响客户端的使用。UML类型图...原创 2019-06-25 22:58:00 · 164 阅读 · 0 评论 -
建造者模式
建造者模式定义建造者模式(Builder) 将复杂对象的构建与它的表现分离,使得同样的构建过程可以构建出不同的表示。建造者模式属于创建型模式,使用建造者模式,用户只需要指定建造的类型就可以得到它们,不需要知道内部创建的细节。UML类图...原创 2019-06-30 23:40:46 · 135 阅读 · 0 评论 -
工厂方法模式
工厂方法模式工厂方法模式(Factory Method)是指定义一个用于创建对象工厂的接口,让子类决定实例化哪一个类。工厂方法模式使对象的实例化延迟到子类里面。UML类图...原创 2019-07-05 21:33:51 · 279 阅读 · 0 评论 -
组合模式
组合模式定义组合模式(Composite),将对象组合成数结构来表示“整体-部分”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。UML类图组合模式组件ComponentComponent抽象组件,为组合中所有对象提供一个接口,不管是叶子组件还是组合组件,在适当的情况下,实现所有类共有接口的默认行为,声明一个接口用于访问和管理Component的子组件。LeafL...原创 2019-07-11 22:21:25 · 133 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式定义抽象工厂模式(Abstract Factory)是指提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类。原创 2019-07-07 12:46:17 · 70 阅读 · 0 评论 -
单例模式
单例模式单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象访问,但它不能防止你实例化多个对象,一个最好的办法就是让类自身负责保存它唯一的实例,这个类可以保证没有其他实例被创建(构造私有化),并且提供一个访问该实例的方法。UML类图Java实现单例的几种方式饿汉式饿汉式,提前加载好,效率高,不支持延时加载// 饿...原创 2019-07-16 21:39:28 · 192 阅读 · 0 评论 -
享元模式
享元模式享元模式(Flyweight)是指利用共享技术有效的支持大量细粒度的对象。这是什么意思呢?可以这么理解,现在池化技术已经成为编程世界里面不可或缺的一部分,有各种池,包括数据库连接池,线程池,对象池,常量池等等,池化技术可以说是享元模式的实现。拿数据库连接池来举例子,我项目初始化的时候,就先创建诺干个数据库连接放到池子里,等我这个线程用的时候我直接去池子里面拿,用完后再放进去,然后另一个线...原创 2019-07-23 22:31:24 · 191 阅读 · 0 评论 -
访问者模式
访问者模式访问者模式(Visitor),表示一个作用于某个对象结构中的各个元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。这个定义比较晦涩难懂,首先有两个关键的点,一个是应用场景是某种结构的各个元素(比如说我这个结构可以是list,那它就作用在这个你这个list里面的所有元素),另一个是它能在不改变这个类(就是不改类结构代码了,谁说也不好使)的前提下来扩展这个类的功...原创 2019-07-29 23:07:45 · 114 阅读 · 0 评论 -
责任链模式
责任链模式责任链模式(chain of Responsibility),使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。责任链模式可以这么理解,比如说,一个网络请求来到你服务器的时候, 你要对这个请求做一些处理,鉴权,json反序列化,往request对象设置一些属性等等,虽然这些操作业务不同,但是处理...原创 2019-07-20 20:03:40 · 126 阅读 · 0 评论 -
外观模式
外观模式定义外观模式(Facade)也称为门面模式,为子系统的一组接口提供一个一致的界面,外观模式定义了一个高层的接口,这个接口使得这个子系统更加容易使用。通俗的来讲就是客户端不用直接与复杂的子系统打交道了,与一个高层的接口打交道,而这个高层接口封装了对这个子系统复杂的调用,举个例子,家里盖房子,你不能直接去找那些大工、小工、木匠以及所使用的工具吧,而是去找包工头来叫支建筑队帮助你盖房子,而这里...原创 2019-06-29 22:29:08 · 177 阅读 · 0 评论 -
观察者模式
观察者模式观察者模式又称订阅-发布模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某个主题对象,当这个主题对象发生变化时,会通知所有观察者对象,使他们能够更新自己。UML类图UML类图代码实现SubjectSubject 主题抽象类,它把所有的观察者放入一个集合中,每个主题都可以有任何数量的观察者,然后定义添加观察者,移除观察者,通知的方法。public abst...原创 2019-07-01 21:53:34 · 144 阅读 · 0 评论 -
装饰模式
装饰模式定义装饰模式(Decorator),动态地给某个对象添加一些额外的职责。在不改变现有类结构的情况下,来扩展其功能。装饰模式是一种代替继承的技术,无需通过继承增加子类就能对对象扩展新功能,更加灵活,同时还能避免类型体系的扩张。UML类图UML类图代码实现Componentpublic abstract class Component { public abstract ...原创 2019-06-26 19:56:05 · 160 阅读 · 0 评论 -
UML类图
1.类:“动物”矩形框,表示一个类class,然后它有三层,第一层表示类名,如果是抽象类,就用斜体表示,第二层表示类的字段与属性,第三层表示类的方法或者行为,其中前面符号含义分别书:“+”表示public,“-”表示private,“#”表示protected2.接口“飞翔”框表示一个接口interface,它与类表示区别就是接口名上面有<>,它有两层,第一层是接口名称,第二...原创 2019-06-24 19:17:19 · 361 阅读 · 0 评论 -
代理模式
代理模式定义代理模式(Proxy)是指为其他对象提供一种代理,以控制对这个对象的访问。通俗来说代理相当于我们平时生活中的中介。UML类图类图代码实现SubjectSubject定义了RealSubject 与Proxy共同接口,这样在任何地方使用RealSubject的时候都可以使用代理。public interface Subject { void request();...原创 2019-06-27 22:39:01 · 84 阅读 · 0 评论 -
简单工厂模式
简单工厂模式简单工厂模式主要是将创建对象与客户端业务分离,不在业务代码显式new对象,而是将new对象的事情交给一个工厂类,工厂类根据提供的不同业务标识创建所需的对象,这样做的好处是能够与业务解耦合,更加灵活,增强扩展性。计算器简单案例案例需求:实现一个计算器,应有简单的加减乘除功能运算类运算类主要是抽象了一个获取结果方法(getResult),另外定义了两个计算因子。public ...原创 2019-07-03 22:22:06 · 88 阅读 · 0 评论 -
状态模式
状态模式状态模式(State)当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象转换的条件表达式过于复杂时的情况。把状态判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。UML类图UML类图代码实现StateState提供了一个状态的抽象,并且定义一个与context特定状态相关的行为public abstra...原创 2019-07-09 21:13:44 · 156 阅读 · 0 评论 -
适配器模式
适配器模式适配器模式(Adapter),将一个类的接口转换成客户希望的另一个接口。适配器模式能够使原本由于接口不兼容而不能一起工作的那些类一起工作。...原创 2019-07-10 21:38:52 · 111 阅读 · 0 评论 -
模板方法模式
模板方法模式定义模板方法模式是指在一个方法中定义了一个算法的骨架,而将其中具体的步骤交由子类来实现。模板方法使得子类在不改变算法结构的情况下重新定义算法中某些步骤的实现。通俗的说就是在父类中定义了干某类型事情的一系列步骤,然后某个具体的步骤是由子类具体实现的,子类怎么实现不影响父类的结构。UML类图UML类图代码实现AbstractClassAbstractClass是一个抽象类,也就...原创 2019-06-28 22:45:37 · 456 阅读 · 1 评论 -
迭代器模式
迭代器模式迭代器模式(Iterator),提供一种方法顺序访问聚合对象中的各个元素,又不暴露该对象的内部表示。当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,可以选择使用迭代器模式。如果需要对聚集对象使用多种方式遍历的时候,可以考虑迭代器模式,同时为遍历聚集结构提供统一的如开始,下一个,是否还有,当前哪一项等接口。UML类图UML类图代码实现Iteratorpubli...原创 2019-07-14 18:20:09 · 88 阅读 · 0 评论 -
中介者模式
中介者模式定义中介者模式(Mediator),又称为调停者模式,用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且独立改变它们之间的交互。中介者,通俗的讲就是中间人或者调停者的意思。就比如说现在的微信群聊,房产中介,短信等等都可以叫做中介者,举个例子,我们要租房子,我们就需要房东的联系方式,跟房东一对一交流,这样很麻烦的。这时我们可以将找房子的需求...原创 2019-07-22 22:52:34 · 267 阅读 · 0 评论