
设计模式
coder_rad
https://rad911.github.io/
展开
-
设计模式
设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。六个原则设计模式总有六个原则:单一职责原则、开闭原则、依赖倒转原则、里式替换原则、迪米特法则、接口隔离原则。单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。 单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难运用的原则,需...原创 2018-09-01 18:58:24 · 218 阅读 · 1 评论 -
享元模式
定义享元模式:运用共享技术有效的支持大量细粒度的对象。面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。享元模式正是为解决这一类问题而诞生的。享元的目的是为了减少不会要额内存消耗,将多个对同一对象的访问集中起来,不必为每个访问者创建一个单独的对象,以此来降低内存的消耗。在享元模式中...原创 2018-09-07 18:27:01 · 204 阅读 · 0 评论 -
外观模式
定义外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。结构图具体编码子系统们: SubSystemOne类public class SubSystemOne { public void methodOne(){ System.out.println("子系统方法一!"); }}...原创 2018-09-07 11:30:05 · 686 阅读 · 0 评论 -
装饰模式
定义装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类模式更加灵活。结构图装饰模式的简化: (1) 只有一个ConcreteComponent时,可以考虑去掉抽象的Component类,把Decorator作为ConcreteComponent的子类。 (2) 如果只有一个ConcreteDecorator类,可以将Decorator类和Concr...原创 2018-09-07 11:02:25 · 1312 阅读 · 1 评论 -
组合模式
定义组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使用用户对单个对象和组合对象的使用具有一致性。当需求中是体现部分和整体层次的结构时,或者你希望用户可以忽略组合对象与单个对象的不同,统一的使用组合结构中的所有对象时,就应该考虑使用组合模式。组合模式为处理树形结构提供了一种较为完美的解决方案,它描述了如何将容器和叶子进行递归组合,使得用户在使用时无须对它们进行区分...原创 2018-09-07 09:41:12 · 167 阅读 · 0 评论 -
桥接模式
定义桥接模式:将抽象部分与它实现部分分离,使它们都可以独立地变化。桥接模式是一种很实用的结构型设计模式,如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合“单一职责原则”。与多层继承方案不同,它将两个独立变化的维度设计为两个独立的继承等级结构,并且在抽象层建立一个抽象关联,该关联关系类似一条连接两个独立继承结构的桥,故名桥接模...原创 2018-09-06 16:28:57 · 1817 阅读 · 1 评论 -
适配器模式
定义适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。系统的数据和行为都正确,但是接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有的对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。在GoF设计模式中,对设计模式讲了两种类型,类适配器和...原创 2018-09-06 14:52:49 · 133 阅读 · 0 评论 -
原型模式
定义:原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式就是从一个对象再创建另外一个可制定的对象,而且不需要知道任何创建的细节。结构图Prototype:原型抽象类,保存类的数据和申明克隆自身的接口。ConcretePrototype:具体原型类,不同的实现会导致克隆的方式不同。Client:客户端类。对于Java而言,那个原型抽...原创 2018-09-06 11:04:19 · 296 阅读 · 0 评论 -
工厂模式之一——简单工厂模式
前言在面向对象编程中,产生一个对象实例最常用的方法是使用new关键字来创建,但这样耦合度太高,如果创建此对象时,需要一些其他的操作,这些代码(创建对象和一些其他的操作)如果没有封装起来给客户端使用,客户端大量使用这些代码,一旦这些重复的操作需要更改,那么带来的工作量将是巨大的,也不利于扩展。所以我们建立一个工厂类来创建对象,让客户端只关注得到工厂生产的对象,而将生产对象的一系列操作封装起来,方...原创 2018-09-03 20:01:52 · 373 阅读 · 0 评论 -
建造者模式
定义建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。结构图Director:指挥者,是构建一个使用Builder接口的对象。...原创 2018-09-05 17:55:50 · 156 阅读 · 0 评论 -
单例模式
定义:单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但是它不能防止你实例化多个对象。一个最好的方法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他的实例可以被创建,并且它可以提供一个访问该实例的方法。结构图 从结构图我们可以看出: 1.单例类中包含自己的一个静态实例(单例实例的来源,有且只有一个) 2....原创 2018-09-05 15:56:19 · 183 阅读 · 0 评论 -
工厂模式之三——抽象工厂模式
定义抽象工厂模式:提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类。工厂模式是用来创建同一个产品的不同类型的,但是抽象工厂模式是用来创建一系列类的产品。产品种类单一,适合用工厂模式;如果有多个种类,各种类型时,通过抽象工厂模式来进行创建是很合适的。结构图实例:设计一个部门人员的管理系统(后续可能会更改数据库的类型)。类图: 编码实现: I...原创 2018-09-04 19:16:23 · 240 阅读 · 0 评论 -
工厂模式之二——工厂方法模式
定义工厂方法模式:一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。优点工厂方法克服了简单工厂违反开发-封闭原则的缺点,既保持了封装对象创建过程的优点。缺点工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说工厂方法把简单工厂的内部逻辑判断转移到了客户端代码中进行。你想要加功能,本来是改...原创 2018-09-04 15:57:01 · 195 阅读 · 0 评论 -
代理模式
定义代理模式:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。为什么要用代理模式?中介隔离作用:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用。开闭原则,增加功能:我们可以通过给代理类增加额外的功能来扩展委托类的功能,这样我们只需要修改代理类而不需要再修改委托类,符合代码设计的开闭原则。有哪几种代理...原创 2018-10-04 18:28:03 · 181 阅读 · 0 评论