
Java设计模式
Java设计模式
汉末大将军
这个作者很懒,什么都没留下…
展开
-
结构型模式之装饰者模式
1 装饰者模式定义装饰模式(Decorator Pattern)指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。设计原则:多用组合,少用继承!对扩展开放,对修改关闭!利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。然而,如果能够利用组合的做法扩展对象的行为,就可以在运行时动态地进行扩展。2 装饰者模式特点通过继承的方式可以使子类具有父类的属性和方法。子类继承父类后,因为一些业务需求可以通过原创 2020-07-22 17:55:49 · 245 阅读 · 0 评论 -
创造型模式之原型模式
1 原型模式简介原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。在Java中我们知道通过new关键字创建的对象是非常繁琐的(类加载判断,内存分配,初始化等),在我们需要大量对象的情况下,原型模式就是我们可以考虑实现的方式。原型模式我们也称为克隆模式,即一个某个对象为原型克隆出来一个一模一样的对象,该对象的属性和原型对象一模一样。原创 2020-07-22 17:51:09 · 287 阅读 · 0 评论 -
创造型模式之抽象工厂模式
1 抽象工厂模式定义抽象工厂模式(Abstract Factory Pattern)隶属于设计模式中的创建型模式,用于产品族的构建。抽象工厂是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂是指当有多个抽象角色时使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象。工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会原创 2020-07-22 17:49:59 · 267 阅读 · 0 评论 -
创造型模式之工厂方法模式
简单工厂模式虽然简单,但存在一个很严重的问题。当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背“开闭原则”,如何实现增加新产品而不影响已有代码?工厂方法模式应运而生。1 工厂方法模式定义 工厂方法模式(Factory Method Pattern)又称为工厂模式,它对简单工厂模式进行了抽象。有一个抽象的Factory类(可以是抽象类和接口),这个类将不再负责具体的产品生产,而是只制定一些规范,具体的生产工作由其子类去完成。在这个模式原创 2020-07-22 17:48:43 · 221 阅读 · 0 评论 -
创造型模式之简单工厂模式
1 工厂模式简介1.1 定义 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。1.2 简单工厂模式结构图该模式中包含的角色及其职责工厂角色(Factory)简单工厂模式的核原创 2020-07-22 17:45:12 · 219 阅读 · 0 评论 -
设计模式目录
1 设计原则SOLID单一职责原则 Single Responsibility Principle SRP接口隔离原则 Interface Segregation Principle ISP依赖反转 原则Dependency Inversion Principle DIP里式替换原则 Liskov Substitution Principle LSP迪米特法则 Law of Demeter LOD开闭原则 Open Closed Principle SRP合成复用原则 Comp原创 2020-07-21 16:07:32 · 113 阅读 · 0 评论 -
创建型模式之单例模式
1 单例设计模式介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。类结构图:需要:(1)将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。(2)在该类内部产生一个唯一的实例化对象,并且将其封装为private static类型。(3)定义一个静态方法返回这个唯一对象。2 单例设计模式四种方式单例模式有四种方式:饿汉式静态常量(推荐)静态代码块懒汉式原创 2020-07-13 16:54:32 · 146 阅读 · 0 评论 -
浅谈UML和设计模式中类的关系
UML和设计模式中类的关系 在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。接下来我们画一张比较完整的类图,类间关系有:继承、组合、聚合、依赖、关联。1. 依赖(Dependence)依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一原创 2020-07-06 18:11:37 · 453 阅读 · 0 评论 -
细说设计模式七大原则(7):合成复用原则
基本介绍英文名:Composite Reuse Principle,CRP定义:软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现问题由来:通常类的复用分为继承复用和合成复用两种,继承复用虽然有简单和易实现的优点,但它也存在以下缺点:继承复用破坏了类的封装性。因为继承会将父类的实现细节暴露给子类,父类对子类是透明的,所以这种复用又称为“白箱”复用。子类与父类的耦合度高。父类的实现的任何改变都会导致子类的实现发生变化,这不利于类的扩展与维护。它限制了复用的灵活性。原创 2020-07-01 20:36:19 · 655 阅读 · 0 评论 -
细说设计模式七大原则(6):开闭原则
2.8.1 基本介绍英文名:Open Closed Principle,OCP定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。开闭原则是编程中最基础、最重要的设计原则。一个软件实体如类,模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方)。用抽象构建框架,用实现扩展细节。当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则。为什么使用开闭原则 :在程序的生命周期内,因为变原创 2020-07-01 20:12:22 · 1056 阅读 · 0 评论 -
细说设计模式七大原则(5):迪米特法则
基本介绍英文名:Law of Demeter,LoD别名:最少知识原则 Least Knowledge Principle,LKP迪米特法则法则定义如下:一个对象应该对其他对象保持最少的了解类与类关系越密切,耦合度越大迪米特法则又叫最少知道原则,即一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类不管多么复杂,都尽量将逻辑封装在类的内部。对外除了提供的 public 方法,不对外泄露任何信息迪米特法则还有个更简单的定义:只与直接的朋友通信(Only talk to原创 2020-07-01 20:10:03 · 270 阅读 · 0 评论 -
细说设计模式七大原则(4):里氏替换原则
基本介绍英文名:The Liskov Substitution Principle, Liskov里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义:如果对每个类型为 T1 的对象 o1,都有类型为 T2 的对象 o2,使得以 T1 定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。换句话说,所有引用基类的地方必须能透明地使用其子类的对象。在使用继承时,遵循里氏替换原则,在原创 2020-07-01 20:08:24 · 222 阅读 · 0 评论 -
细说设计模式七大原则(3):依赖倒转原则
基本介绍英文名:Dependence Inversion Principle我们先要写出低耦合高内聚的代码,在java中需要遵循如下原则:模块间的依赖通过抽象类或接口发生,实现类之间的依赖关系也是通过抽象类或接口产生(实现类之间不应发生直接的依赖关系),降低系统的耦合性接口或抽象不依赖于实现类,但实现类依赖接口或抽象类,实现类对系统需要的功能具体实现,提高类的内聚程度依赖倒转原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象抽象不应该依赖细节,细节应该依赖抽象依赖倒转原则原创 2020-07-01 20:05:29 · 402 阅读 · 0 评论 -
细说设计模式七大原则(2):接口隔离原则
基本介绍英文名:Interface Segregation Principle, ISP接口隔离原则定义如下:客户端不应该依赖它不需要的接口类间的依赖关系应该建立在最小的接口上其实通俗来理解就是,不要在一个接口里面放很多的方法,这样会显得这个类很臃肿不堪。接口应该尽量细化,一个接口对应一个功能模块,同时接口里面的方法应该尽可能的少,使接口更加轻便灵活。或许看到接口隔离原则这样的定义很多人会觉得和单一职责原则很像,但是这两个原则还是有着很鲜明的区别。接口隔离原则和单一职责原则的审视角度是不同的,原创 2020-07-01 14:22:27 · 286 阅读 · 0 评论 -
细说设计模式七大原则(1):单一职责原则
2.1 设计模式的目的编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好代码重用性 (即:相同功能的代码,不用多次编写)可读性 (即:编程规范性, 便于其他程序员的阅读和理解)可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护)可靠性 (即:当我们增加新的功能后,对原来的功能没有影响)使程序呈现高内聚,低耦合的特性分享金句:设计模式包含了面向对象的精髓,“懂了原创 2020-07-01 14:08:01 · 201 阅读 · 0 评论