设计模式学习
文章平均质量分 93
晨初听雨
这个作者很懒,什么都没留下…
展开
-
设计模式分类以及设计原则
设计模式分为三大类:创建型模式 1)Factory模式(简单工厂模式) 2)AbstactFactory模式(抽象工厂模式) 3)Singleton模式(单例模式) 4)Builder模式(建造者模式) 5)Prototype模式(原型模式)结构型模式 6)Bridge模式(桥接模式) 7)Adapter模式(适配器模式) 8)Decorato...原创 2018-10-22 17:30:58 · 153 阅读 · 0 评论 -
代理模式(Proxy)
1.简述代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。2.角色Subject:抽象主题角色。可以是接口,也可以是抽象类,是一个...原创 2018-11-16 13:16:44 · 195 阅读 · 0 评论 -
适配器模式(Adapter)
1.简述适配器模式就是将一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。下面这个例子很好的说明了适配器的作用2.角色 目标角色(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 源角色(Adaptee)也就是被适配的类:需要适配的类或适配者类。 适配器角色(Adapter):通过包装一个需要适配...原创 2018-10-30 13:25:51 · 373 阅读 · 0 评论 -
装饰模式(Decorator)
1.简介装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。2.特点(1) 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。(2) 装饰对象包含一个真实对象的引用(reference)(3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。...原创 2018-10-27 12:35:00 · 271 阅读 · 0 评论 -
抽象工厂模式(Abstract Factory)
抽象工厂模式:1.简介 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据里氏替换原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不...原创 2018-10-26 16:55:58 · 373 阅读 · 0 评论 -
策略模式(Strategy)
1.简述策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。2.角色Context(应用场景):需要使用ConcreteStrategy提供的算法。内部维护一个Strategy的实例。负责动态设置运行时Strategy具体的实现算法。负责跟Strategy之间的交互和数据传递。 Strategy(抽象策略类):定义...原创 2018-10-29 15:38:14 · 415 阅读 · 0 评论 -
单例模式(Singleton)
单例模式: 1、简介: 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。 2、...原创 2018-10-23 17:18:09 · 494 阅读 · 0 评论 -
桥接模式(Bridge)
1.简述桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。将抽象部分与他的实现部分分离这句话不是很好理解,其实这并不是将抽象类与他的派生类分离,而是抽象类和它的派生类用来实现自己的对象。这样还是不能理解的话。我们就先来认清什么是抽象化,什么是实现化,什么是脱耦。抽象化:从众多...原创 2018-10-28 12:36:01 · 402 阅读 · 0 评论 -
模板方法模式(Template)
1.简述模板模式:定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。2.角色角色1:抽象模板(Abstract Template)角色有如下责任定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤。 定义并实现了一个模板方法。这个模板方法一般是一个具体方法,它给出了一...原创 2018-10-28 10:52:26 · 395 阅读 · 0 评论 -
工厂方法模式(Factory Method Pattern)
工厂方法简介:工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。工厂方法模式是简单工厂模式的衍生(简单工厂模式请见连接:https://bl...原创 2018-10-22 18:42:09 · 332 阅读 · 0 评论 -
简单工厂模式(Factory Pattern)
简单工厂模式又 叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 我们从一个例子展开,现在有一道面试题:使用java实现一个计算机控制台程序,要求输入数的运算,得到结果。 这道题目最原始的写法:public class Client { public static voi...原创 2018-10-22 17:46:26 · 185 阅读 · 0 评论 -
JDK动态代理和Cglib动态代理
我们在学习动态代理之前最好要先了解静态代理。如果没有了解过的同学可以看我之前写的静态代理的博客。传送门:代理模式(Proxy)已经了解过静态代理的同学我们就可以接着往下面看了。1.JDK动态代理jdk动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用业务方法前调用InvocationHandler处理。代理类必须实现InvocationHandler接口,并且,JDK动态代理...原创 2019-07-08 18:23:07 · 270 阅读 · 0 评论