设计模式
文章平均质量分 88
以通俗易懂的语言介绍设计模式
Star Zheng
持续学习者
展开
-
设计原则:接口隔离原则
接口隔离原则(ISP)接口隔离原则的英文翻译是 “Interface Segregation Principle”,缩写为 ISP。 Robert Martin 是这样定义它的:“Clients should not be forced to depend upon interfaces that they do not use。” 直译成中文的话就是:客户端不应该强迫依赖它不需要的接口。其中的“客户端”,可以理解为接口的调用者或者使用者。实际上,“接口”这个名词可以用在很多场合中。生活中我们可以用它来原创 2021-01-11 20:36:07 · 455 阅读 · 1 评论 -
设计原则:里式替换原则
里式替换原则(LSP)里式替换原则的英文翻译是:Liskov Substitution Principle,缩写为 LSP。这个原则最早是在 1986 年由 Barbara Liskov 提出,他是这么描述这条原则的:If S is a subtype of T, then objects of type T may be replaced with objects of type S, without breaking the program。大概意思就是:子类对象能够替换程序中父类对象出现的任原创 2020-12-16 21:06:44 · 262 阅读 · 0 评论 -
设计原则:开闭原则
开闭原则(OCP)开闭原则的英文全称是 Open Closed Principle,简写为 OCP。它的英文描述是:softwareentities (modules, classes, functions, etc.) should be open forextension but closed formodifcation。我们把它翻译成中文就是:软件实体(模块、类、方法等)应该“对扩展开放、对修改关闭”。简单地说就是,添加一个新的功能应该是,在已有代码基础上扩展代码(新增模块、类、方法等),而非修原创 2020-12-15 21:40:49 · 229 阅读 · 0 评论 -
设计原则:单一职责原则
单一职责原则(SRP)单一职责原则的英文是 Single Responsibility Principle,缩写为 SRP。这个原则的英文描述是这样的:A class or module should have a single reponsibility。如果我们把它翻译成中文,那就是:一个类或者模块只负责完成一个职责(或者功能)。如何判断类的职责是否单一评价一个类的职责是否足够单一,我们并没有一个非常明确的、可以量化的标准,可以说,这是件非常主观、仁者见仁智者见智的事情。实际上,在真正的软件开发中原创 2020-12-15 21:39:42 · 249 阅读 · 0 评论 -
设计模式也可以这么简单
一直想写一篇介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混。自认为本文还是写得不错的????????????,花了不少心思来写这文章和做图,力求让读者真的能看着简单同时有所收获。设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four (GoF) 的分类了,他们将设计模式分类为 23 种经典的模式,根据用途我们又可以分为三大类,分别为创建型模式、结构型模式和行为型模式。有一些重要的设计原则在开篇和大家分享下,这些原则转载 2020-09-14 15:25:23 · 474 阅读 · 0 评论 -
Java 设计模式(十三):模板方法模式
模板方法模式模板方法(Template Method)定义了执行方法的固定顺序,它可以提供默认实现,该实现对于所有或某些子类可能是通用的;也可以提供抽象的方法,让子类决定具体要做什么。在含有继承结构的代码中,模板方法模式是非常常用的。模板方法模式比较简单,这里就使用一个简单的示例进行说明。模板方法示例在模板方法模式中,需要有一个抽象类来定义一些默认方法或需要子类实现的抽象方法,同时需要一个模板方法来固定这些方法的顺序。在不改变方法执行顺序的前提下,由子类来决定这些方法的具体内容。抽象类:/**原创 2020-09-02 15:27:42 · 212 阅读 · 0 评论 -
Java 设计模式(六):代理模式
代理模式代理模式(Proxy)意图是为另一个对象提供代理,以控制对其的访问。即通过代理类访问目标类,这样做可以通过代理对象扩展目标类的功能以及控制对目标类的访问。代理模式主要有三种形式,分别是静态代理、动态代理、CGlib 代理。示例假设,我们要记录老师授课前和授课后的信息,分别使用上面三种代理模式实现。静态代理若代理类在程序运行前就已经存在,那么这种代理方式被成为静态代理 ,这种情况下的代理类通常都是我们在 Java 代码中定义的。使用静态代理实现时,需要定义接口或者父类,被代理类(即目标类)原创 2020-07-16 22:25:11 · 172 阅读 · 0 评论 -
Java 设计模式(十二):享元模式
享元模式享元模式(Flyweight),使用共享技术有效地支持大量细粒度的对象。常用于系统底层开发,解决系统的性能问题。比如,数据库连接池技术。享元模式能够解决重复对象的内存浪费的问题,当系统中有大量相似对象,需要缓冲池时,不需总是创建新对象,可以从缓冲池里获取。这样可以降低系统内存消耗,同时提高效率。享元模式经典的应用场景就是池技术了,String 常量池、数据库连接池、缓冲池等等都是享元模式的应用,它是池技术的重要实现方式。要应用享元模式,我们需要将对象属性分为内部属性和外部属性。内部属性使对象原创 2020-07-15 20:05:07 · 254 阅读 · 1 评论 -
Java设计模式(十):外观模式
外观模式外观模式(Facade),为子系统中的一组接口提供统一的接口。此模式定义了一个高层接口,这个接口使子系统更易于使用。简而言之,外观模式提供了到复杂子系统的简化接口。外观模式解析角色介绍Facade:外观类,知道哪些子系统负责处理请求,将客户的请求代理给适当的子系统。SubSystemOne/SubSystemTwo:子系统类,实现子系统的功能,处理 Facade 对象指派的任务。外观模式基本代码Facade 类:外观类/** * Facade */public cla原创 2020-07-15 11:07:44 · 225 阅读 · 0 评论 -
Java 设计模式(十一):组合模式
组合模式组合模式(Composite),将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式解析角色介绍Component:组合中的对象声明接口,在适当情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理 Component 的子部件。Leaf:在组合中表示叶节点对象,叶节点没有子节点。Compos...原创 2020-01-16 21:39:24 · 244 阅读 · 0 评论 -
Java 设计模式(八):装饰器模式
装饰者模式装饰者模式(Decorator),动态地给一个对象添加一些额外的功能,就增加功能来说,装饰者模式比继承更灵活。装饰者模式解析角色介绍Component:定义一个对象接口,可以给这些对象动态地添加功能。ConcreteComponent:是定义了一个具体的对象,也可以给这个对象添加一些功能。Decorator:装饰抽象类,继承了 Component,从外类来扩展 ...原创 2020-01-07 23:20:16 · 183 阅读 · 0 评论 -
Java 设计模式(七):桥接模式
桥接模式桥接模式(Bridge),将抽象部分和它的实现部分分离,使它们都可以独立地变化。桥接模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象与行为实现分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。也就是说,实现系统可能有多种方式分类,每一种分类都有可能变化。桥接模式的核心意图就是把这些分类独立出来,让它们各自独立变化,减少它...原创 2019-12-13 22:38:37 · 502 阅读 · 0 评论 -
Java 设计模式(九):适配器模式
适配器模式适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个借口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。它主要应用于希望复用一些现存的类,但是接口又于复用环境要求不一致的情况。适配器模式主要分为三类:对象适配器模式、类适配器模式、接口适配器模式。适配器模式解析这里主要以对象适配器为例。角色介绍Target:客户所期待的接口,可以是具体...原创 2019-12-13 22:32:51 · 302 阅读 · 0 评论 -
Java 设计模式(五):建造者模式
建造者模式建造者模式(Builder),又叫生成器模式,是一种对象构建模式。它将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式可以将一个产品的内部表象和产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。建造者模式解析...原创 2019-11-16 20:53:26 · 292 阅读 · 0 评论 -
Java 设计模式(四):原型模式
原型模式原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。原型模式是一种创建型设计模式,其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。示例有一个简历类,必须要有姓名,可以设置性别和年龄,也可以设置工作经历。最后复制三份相同简历。/** * Resume */public class Resume { private ...原创 2019-10-13 13:20:31 · 289 阅读 · 0 评论 -
Java 设计模式(三):工厂模式
工厂模式示例实现两数的加、减、乘、除运算。/** * Operation 运算类 */public class Operation { public static double getResult(double numberA, double numberB, String operate) { double result = 0; if (...原创 2019-10-06 15:53:34 · 145 阅读 · 0 评论 -
Java 设计模式(二):单例模式
单例模式所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。单例设计模式八种方式饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式(线程安全,同步方法)懒汉式(线程安全,同步代码块)双重检查静态内部类枚举饿汉式(静态常量、静态代码块)/** * 饿汉式(静态变量...原创 2019-09-26 20:56:36 · 182 阅读 · 0 评论