设计模式
A__yes
这个作者很懒,什么都没留下…
展开
-
[一天一个设计模式]-[策略模式]
策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。策略模式和状态模式的区别:策略模式的每个策略是平等的,所有策略调用者都应该知道,由调用者自己判断选择运用哪个策略状态模式的每个...原创 2019-11-22 13:24:04 · 167 阅读 · 0 评论 -
[一天一个设计模式]-[状态模式]
状态模式(State Pattern) :允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。状态模式包含以下主要角色。环境(Context)角色:也称为上下文,它定义了客户感兴趣的接口,维护一个当前状态,并将与状态相关的操作委托给当前状态对象来处理。抽象状态(State)角色:...原创 2019-11-20 13:51:45 · 292 阅读 · 0 评论 -
[一天一个设计模式]-[观察者模式]
观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。观察者模式包含如下角色:Subject: 目标ConcreteSubject: 具体目标Observer: 观察者ConcreteObserver: 具体观察者举个栗子...原创 2019-11-19 10:42:37 · 225 阅读 · 0 评论 -
[一天一个设计模式]-[中介者模式]
中介者模式(Mediator Pattern)定义:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象行为型模式。与代理模式的区别,代理模式主要是代理某一类对象,中介模式是中介了一组对象,代理模式主要是控制真实对象的访问,中介模式主要是将调用者和被调用者解耦中介者模式包含以下...原创 2019-11-18 10:43:06 · 164 阅读 · 0 评论 -
[一天一个设计模式]-[命令模式]
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。命令模式包含以下主要角色。抽象命令类(Command)角色:声明执行命令的接口,拥有执行命令的抽象方法 execute()。具体命令角色(Concrete Comman...原创 2019-11-15 14:00:20 · 176 阅读 · 0 评论 -
[一天一个设计模式]-[责任链模式]
为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。责任链模式主要包含以下角色。抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。具体处理者(Concrete Handler)角色:实现抽象处理者的处理方法,判断能否处理本次请...原创 2019-11-14 11:00:04 · 133 阅读 · 0 评论 -
[一天一个设计模式]-[代理模式]
代理模式的设计思想是通过代理的方式避免暴露被代理对象或者说代理不容易被取得的对象.代理又分为静态代理、动态代理。静态代理是由程序员创建或工具生成代理类的源码,再编译代理类。所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和委托类的关系在运行前就确定了。动态代理是在实现阶段不用关心代理类,而在运行阶段才指定哪一个对象。当有一组不同的主题的控制访问一致,如果用静态代理就需要为...原创 2019-11-12 16:05:58 · 187 阅读 · 0 评论 -
[一天一个设计模式]-[享元模式]
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。在享元模式中共享的是享元对象的内部状态,外部状态需要通过环境来设置。在实际使用中,能够共享的内部状态是有限的,因此享元对象一般都设计为较小的对象,它所包含的内部状态较少,这种对象也称为细粒度对象。享元模式...原创 2019-11-11 10:51:24 · 166 阅读 · 0 评论 -
[一天一个设计模式]-[外观模式]
外观模式,顾名思义就是要把对外的接口整的好看点。是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。与适配器模式区别,适配器模式要把对象转成特定对象与装饰器模式区别,装饰器模式装饰完还是原来的类型。举个列子,去买奶茶,奶茶有各...原创 2019-11-08 10:15:04 · 163 阅读 · 0 评论 -
[一天一个设计模式]-[装饰器模式]
装饰器模式的可以在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能),它属于对象结构型模式。装饰器模式和适配器模式的区别:适配器模式是把一个类型转变成另一个类型,并且保持原类型的功能不变装饰器模式是把一个类型的功能进行扩展,类型保持不变。举个栗子:一个小朋友要穿衣服interface Child{ void wear();}class Li im...原创 2019-11-05 11:11:22 · 181 阅读 · 0 评论 -
[一天一个设计模式]-[桥接模式]
桥接模式和适配器模式很像,桥接模式和适配器模式用于设计的不同阶段,桥接模式用于系统的初步设计,对于存在两个独立变化维度的类可以将其分为抽象化和实现化两个角色,使它们可以分别进行变化;而在初步设计完成之后,当发现系统与已有类无法协同工作时,可以采用适配器模式。但有时候在设计初期也需要考虑适配器模式,特别是那些涉及到大量第三方应用接口的情况。适配器模式是把一个调用者不能用的类转换成调用者可以用...原创 2019-11-04 11:16:07 · 606 阅读 · 0 评论 -
[一天一个设计模式]-[适配器模式]
适配器模式,调用者调用的对象有一个标准规范,但是提供者不符合这个规范,此时调用者需要调用提供者中间就需要一个适配器来转换标准。类比于电源适配器。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。举个栗子,电脑只有usb接口但是要读取sd卡内容类适配器模式这种模式是适配器是通过继承被继承对象来实现的。public interface USB { String re...原创 2019-11-01 13:19:41 · 205 阅读 · 0 评论 -
[一天一个设计模式]-[原型模式]
原型模式即通过一个已有的对象clone出一个一样的对象,当直接创建该对象非常消耗资源时则可以考虑原型模式。实现克隆操作,继承 Cloneable,重写object的 clone()。克隆分深度克隆和浅度克隆 浅度克隆:只把需要克隆对象的成员变量的值复制过去,如果是引用变量也只会复制引 用地址,指向的和原对象是同一个对象。 深度克隆:把需要克隆对象的引用成员变量也克隆一份。...原创 2019-10-31 11:01:45 · 144 阅读 · 0 评论 -
[一天一个设计模式]-[建造者模式]
这个模式和工厂模式很像,建造者(Builder)模式和工厂模式的关注点不同:建造者模式注重零部件的组装过程,而工厂方法模式更注重零部件的创建过程,但两者可以结合使用。举个栗子,StringBuilderpublic class AbstractStringBuilder { protected char[] value; protected int count; ...原创 2019-10-30 11:26:39 · 184 阅读 · 0 评论 -
[一天一个设计模式]-[工厂模式]
文章目录简单工厂模式工厂方法模式抽象工厂模式简单工厂模式简单工厂模式就是把创建对象实例的工作全部交给工厂类,使用方只需要知道自己需要的类的类型。举个栗子,养宠物,有的人喜欢猫有的人喜欢狗。public interface Pet{ void say();}public class Cat implements Pet{ @Override publ...原创 2019-10-29 11:21:19 · 159 阅读 · 0 评论 -
[一天一个设计模式]-[单例模式]
文章目录1. 饿汉模式2. 懒汉模式3. 双重检验锁4. 静态内部类5. 枚举类1. 饿汉模式public class S{ private S(){} private static S s=new S(); public static S get(){ return s; }} 线程安全,加载时就初始化,根据...原创 2019-10-28 11:11:44 · 175 阅读 · 0 评论