![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 88
白云苍狗日悠悠
Android 开发者
展开
-
设计模式——适配器模式
适配器模式适配器模式是指将一个接口转化成另外一个希望得到的接口适配器模式包括对象适配器模式和类适配器模式。 ● 目标(Target)角色:这就是所期待得到的接口。注意:由于这里讨论的是类适配器模式,因此目标不可以是类。 ● 源(Adaptee)角色:现在需要适配的接口。 ● 适配器(Adaper)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口。显然,这一原创 2018-01-24 17:16:24 · 280 阅读 · 0 评论 -
设计模式——享元模式
享元模式模式定义享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。模式结构享元模式包含如下角色:Flyweight: 抽象享元类ConcreteFly...原创 2018-02-08 16:07:58 · 276 阅读 · 0 评论 -
设计模式——单例模式
单例模式单例模式的几种实现方式单例模式的实现有多种方式,如下所示:1、懒汉式,线程不安全是否 Lazy 初始化:是是否多线程安全:否实现难度:易描述:这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有加锁 synchronized,所以严格意义上它并不算单例模式。 这种方式 lazy loading 很明显,不要求线程安全,在多线程不能正常工作。代码实例:public cla原创 2018-02-06 14:45:15 · 242 阅读 · 0 评论 -
设计模式——策略模式
策略模式定义策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式。模式的结构封装类(Context):也叫上下文,对策略进行二次封装,目的是避免高层模块对策略的直接调用。抽象策略:通常情况下为一个接口,当各个实现类中存在着重复的逻辑时,则使用抽象类原创 2018-02-06 14:41:55 · 279 阅读 · 0 评论 -
设计模式——组合模式
组合模式定义:组合模式(Composite Pattern)将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户可以使用一致的方法操作单个对象和组合对象。 UML图:(1)Component:抽象根节点,为组合中的对象声明接口。在适当的情况下,实现所有类共有接口的缺省行为。声明一个接口用于访问和管理Component的子节点。可在递归结构中定义一个接口,用于访问一个父节点,并在合适原创 2018-01-29 20:51:38 · 479 阅读 · 0 评论 -
设计模式——状态模式
状态模式定义状态模式(State Pattern) :允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。模式结构状态模式包含如下角色:Context: 环境类State: 抽象状态类ConcreteState: 具体状态类模式分析状态模式描述了对象状态的变化以及对象如何在每一种状态下表现出不原创 2018-02-05 20:11:53 · 428 阅读 · 0 评论 -
设计模式——迭代器模式
迭代器模式定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。 Java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式题外话学习这个设计模式之后才知道以前写了很多很“辣鸡”的代码,可能有些小伙伴也这样写过代码。下面我就说说我刚提到的“超辣鸡”的代码的一个例子。希望自己,也希望每一个小伙伴都不要再犯这种错误。需求:图书馆有一些语文文学书。原创 2018-01-26 18:05:39 · 275 阅读 · 0 评论 -
设计模式——代理模式(Proxy)
代理模式业务类只需要关注业务逻辑本身,保证了业务类的重用性,这是代理的共有优点,同时协调调用者和被调用者的关系,使得两者一定程度的解耦。代理模式是常用的结构型设计模式之一,它为对象的间接访问提供了一个解决方案,可以对对象的访问进行控制。代理模式类型较多,其中远程代理、虚拟代理、保护代理等在软件开发中应用非常广泛。模式优点代理模式的共同优点如下:(1) 能够协调调用者和被调用者,在一原创 2018-01-25 16:46:51 · 368 阅读 · 0 评论 -
设计模式——装饰者模式
装饰者模式Decorator模式(别名Wrapper)动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。设计原则多用组合,少用继承。利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。然而,如果能够利用组合的做法扩展对象的行为,就可以在运行时原创 2018-01-25 16:44:03 · 207 阅读 · 0 评论 -
设计模式——外观模式(Facade)
外观模式(Facade)定义定义了一个高层、统一的接口,外部与通过这个统一的接口对子系统中的一群接口进行访问。优缺点优点 - 实现客户类与子系统类的松耦合降低原有系统的复杂度提高了客户端使用的便捷性,使得客户端无须关心子系统的工作细节,通过外观角色即可调用相关功能。 (1)引入外观角色之后,用户只需要与外观角色交互; (2)用户与子系统之间的复杂逻辑关原创 2018-01-25 16:39:02 · 333 阅读 · 0 评论 -
六大原则(4)——接口隔离原则
接口隔离原则定义客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。未遵循接口隔离的如下:遵循接口隔离原则:举例互联网公司原创 2018-02-01 16:11:09 · 496 阅读 · 0 评论 -
六大原则(6)——开闭原则
开闭原则概述定义一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。核心用抽象构建框架,用实现扩展细节。因为抽象灵活性原创 2018-02-01 15:32:40 · 357 阅读 · 0 评论 -
设计模式——桥接模式
定义桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。介绍意图:将抽象部分与实现部分分离,使它们都可以独立的变化。主要解决:在有多种可能会变化的情况下,用继...原创 2018-07-24 11:53:12 · 354 阅读 · 0 评论