![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 57
Rogera7
先后从事Android手机、Android TV开发
展开
-
设计模式之建造者模式【Builder Pattern】
建造者模式(Builder)主要用来构建复杂的对象,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构建流程。1、定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。2、使用场景1、相同的方法,不同的执行顺序,产生不同的事件结果。 2、多个部件或零件,都可以装配到一个对象中,但产生的结果不同。 3、产品类非常复杂,或者产品类中的调用顺...原创 2018-05-19 11:53:22 · 182 阅读 · 0 评论 -
设计模式之访问者模式【Visitor Pattern】
访问者模式是23种设计模式中最复杂的一个,使用频率并不高。大多数情况下,并不需要访问者模式,但一旦需要使用它时,那就真的是需要它了。1、定义封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下,定义作用于这些元素的新操作。2、使用场景对象结构比较稳定,但是经常需要在此对象结构上定义新的操作。如果想对一个对象结构中的各个元素进行很多不同的而且不相关的操作...原创 2018-05-20 15:49:58 · 1142 阅读 · 1 评论 -
设计模式之中介者模式【Mediator Pattern】
中介者模式将多对多的相互作用装化为一对多的相互作用。1、定义用一个中介者对象来封装一系列的对象交互。中介者使得各对象之间不必显示地相互引用,从而使他们松散耦合。2、使用场景如果一组对象之间的交互操作很多而且对象的行为操作相互依赖彼此时。可以采用中介者模式把这些对象的交互管理起来,各个对象只需要和中介者交互,从而使得各个对象松散偶耦合,结构清晰易懂。3、UML图4...原创 2018-05-20 17:08:33 · 122 阅读 · 0 评论 -
设计模式之代理模式【Proxy Pattern】
1、定义为其他对象提供一种代理以控制对这个对象的访问。2、使用场景当无法或不想直接访问某个对象或者访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。3、UML图4、代码示例public interface Subject { public void visit();}//被代理...原创 2018-05-20 19:24:21 · 178 阅读 · 0 评论 -
设计模式之组合模式【Composite Pattern】
组合模式将一组相似的对象看作一个对象处理,并根据一个树状结构来组合对象,然后提供一个统一的方法去访问对象,以此忽略掉对象与对象集合之间的差别。1、定义将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。2、使用场景表示对象的部分-整体层次结构时。如果希望统一地使用组合结构中的所有对象。3、UML图4、示例代码...原创 2018-05-20 21:33:49 · 147 阅读 · 0 评论 -
设计模式之适配器模式【Adapter Pattern】
1、定义适配器模式把一个类的接口装换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个雷能够在一起工作。2、使用场景系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容。如果想创建一个可以复用的类,这个类可能和一些不兼容的类一起工作。需要一个统一的输出接口,而输入端的类型不可预知。3、UML图4、代码示例public...原创 2018-05-20 22:48:28 · 134 阅读 · 0 评论 -
设计模式之装饰模式【Decorator Pattern】
装饰模式(Decorator Pattern)也称包装模式(Wrapper Pattern),结构型设计模式,主要用一种对客户端透明的方式来动态地扩展对象的功能。1、定义动态地给一个对象添加额外的职责。2、使用场景需要动态地扩展类的功能时。就增加功能来说,装饰模式比生成子类更为灵活。3、UML图4、代码示例被装饰组件类:public interface Co...原创 2018-05-21 23:27:24 · 178 阅读 · 0 评论 -
设计模式之享元模式【Flyweight Pattern】
享元模式是对象池的一种实现,用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,来缓存可共享的对象,达到对象共享、避免创建过多对象的效果。可以提升性能。避免内存移除等。1、定义使用共享对象可有效地支持大量的细粒度的对象。2、使用场景系统中存在大量相似对象。细粒度的对象都具备较接近的外部状态,并且内部状态与环境无关。徐亚缓冲池的场景。3、UML图4...原创 2018-05-22 00:29:35 · 197 阅读 · 0 评论 -
设计模式之桥接模式【Bridge Pattern】
1、定义将抽象部分与实现部分分离,使他们都可以独立地变化。2、使用场景如果抽象部分和实现部分都能够扩展的情况,可以采用桥接模式让他们都独立变化,从而灵活地进行单独扩展。一个类存在两个独立变化的维度,而且这两个维度都需要进行扩展。任何多维度变化类或者多个树状类之间的耦合都可以使用桥接模式解耦。3、UML图Abstraction:抽象部分的接口。通常需要维护一个实现部...原创 2018-05-26 00:59:16 · 245 阅读 · 0 评论 -
设计模式之模板方法模式【Template Method Pattern】
模板方法模式主要用来定义算法的骨架,把具体的算法实现延迟到子类。1、定义定义一个操作中的算法骨架,将这些算法步骤的具体实现延迟到子类中,使得子类可以不改变算法结构即可重定义该算法的某些特定步骤。2、使用场景需要固定定义算法的骨架,实现一个算法的不变部分,并把可变的部分留给子类来实现。各个子类有公共的行为可以抽取出来,集中在一个公共的类中去实现,从而避免代码重复。...原创 2018-05-20 14:10:17 · 169 阅读 · 0 评论 -
设计模式之备忘录模式【Memento Pattern】
备忘录模式是一种行为模式,主要用于保存对象的当前状态,并且在之后可以恢复到此状态。1、定义在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样,以后就可以将该对象恢复到原先保存的状态。2、使用场景需要保存一个对象的在某个时刻的状态或部分状态如果用一个接口来让其他对象得到这些状态,将会暴露对象的实现细节并破坏对象的封装性,这是可以通过中间对象间接访问其内...原创 2018-05-20 13:29:52 · 186 阅读 · 0 评论 -
设计模式之原型模式【Prototype Pattern】
原型模式是创建型模式,主要用来对原始对象的拷贝。1、定义用原型实例指定创建对象的种类,并通过复制这些原型来创建新的对象。2、使用场景1、类初始化需要消耗非常多的资源,资源包括数据、硬件资源等,通过原型复制避免资源消耗。 2、通过 new 生成对象需要非常繁琐的数据准备或访问权限。 3、一个对象需要提供给其他对象访问,但是其他对象可能对其修改时。可以使用原型模式复制多个对象供调用...原创 2018-05-19 14:03:00 · 381 阅读 · 0 评论 -
设计模式之工厂方法模式【Factory Method Pattern】
工厂方法的解题思路是采用无为而治的方式,即自己不知道具体如何实现,把它延迟到子类实现。1、定义定义一个用于创建对象的接口,让子类决定实例化哪个具体类。2、使用场景在任何需要生成复杂对象的地方,都可以使用工厂方法模式。3、UML图Product:抽象产品。ConcreteProduct:具体产品Factory:创建器,抽象工厂,申明创建Product的工厂方法。C...原创 2018-05-19 16:27:40 · 159 阅读 · 0 评论 -
设计模式之抽象工厂模式【Abstract Factory Pattern】
抽象工厂模式主要是用来为一个产品族的选择实现。1、定义为创建一组相关或者相互依赖的对象提供一个接口,而不需要指定他们的具体类。2、使用场景如果一个系统希望独立于它的产品的创建、组合和表示的时候。也就是系统只直到产品的接口,而不关心实现的时候。如果一个系统要由多个产品系列中的一个来配置的时候。也就是可以动态地切换产品族的时候。一个产品族有相同的约束的时候。3、UML图...原创 2018-05-19 17:42:52 · 234 阅读 · 0 评论 -
设计模式之策略模式【Stragety Pattern】
当一个问题有多个不同的解决方案时,可以考虑使用策略模式。1、定义策略模式定义了一系列算法,并将每一个算法封装起来,而且使他们还可以互相替换。 策略模式让算法独立于使用它的客户而独立变化。2、使用场景当同一类型的问题有多种处理方式,而仅仅是具体的行为有差别时。出现同一个算法,有多种不同的实现情况时,可以使用策略模式来把这些“不同的实现”实现成为一个算法的类层次。出现同一抽...原创 2018-05-19 19:00:18 · 222 阅读 · 0 评论 -
设计模式之状态模式【State Pattern】
状态模式把对象的行为包装在不同的状态对象里,每一个状态对象都有一个共同的抽象状态类。1、定义当一个对象的内在状态改变时允许改变其行为,这个对象看起来是改变了其类。2、使用场景一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为。代码中包含大量与对象状态有关的条件语句。3、UML图4、示例代码public interface State ...原创 2018-05-19 22:17:06 · 955 阅读 · 0 评论 -
设计模式之责任链模式【Chain Of Responsibility Pattern】
当客户端发出一个请求,有多个对象都有机会来处理这个请求,但是客户端不知道究竟谁会来处理他的请求时,这是就可以使用责任链模式来处理这种情况。1、定义使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。2、使用场景多个对象可以处理一个请求,但具体由哪个对象处理则在运行时动态决定。在请求者不明确...原创 2018-05-19 23:10:43 · 790 阅读 · 0 评论 -
设计模式之命令模式【Command Pattern】
命令模式把请求封装成为命令对象,并定义统一的执行操作接口。这个命令对象可以被存储、转发、记录、处理、撤销等。1、定义将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。2、使用场景需要抽象出待执行的动作,然后以参数形式提供出来,类似于回调机制。在不同的时刻指定、排列和执行请求。一个命令对象可以有与初始请求无关的...原创 2018-05-20 00:18:28 · 1885 阅读 · 0 评论 -
设计模式之观察者模式【Observer Pattern】
观察者模式是一种一对多的关系,当目标对象状态发生改变时,它会通知观察者。1、定义定义对象间一种一对多的关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并更新自己。2、使用场景当一个抽象模型有两个方面,其中一个方面的操作依赖于另一个方面的状态变化。改变一个对象的时候,需要同时连带改变其他对象,并且不知道有多少对象需要连带改变。当一个对象需要通知其他对象,但是又洗...原创 2018-05-20 11:43:28 · 154 阅读 · 0 评论 -
23种设计模式和面向对象的六大原则
一、面向对象的六大原则1. 单一职责原则 SRP英文名称是Single Responsibility Principle,简写 SRP。 就一个类而言,应该仅有一个引起它变化的原因,也就是一个类中应该是一组相关性很高的方法、数据的封装。2. 开闭原则 OCP英文名称 Open Close Princeple,简写 OCP。 软件中的对象(类、方法、模块)应该对于扩展...原创 2018-05-27 19:44:03 · 312 阅读 · 0 评论