
Java设计模式
Mark_ZP
生命不息,奋斗不止
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java设计模式之组合模式(Composite)
组合(Composite)模式的定义:有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。组合模式的主要优点有:组合模式使得客户端代码可以一致地处理单个对象和组合对象,无须关心自己处理的是单个对象,还是组合对象,这简化了客户端代码; 更容易在组合体内加入新的对象,客户端不会因为加入了新的对象而更改源代...转载 2020-03-02 14:29:01 · 371 阅读 · 0 评论 -
Java 继承、依赖、关联、组合、聚合
类之间的关系大体上存在五种:继承(实现)、依赖、关联、聚合、组合。这其中聚合和组合都是关联的一种特列。继承:对于类来说,这种关系叫做继承,而对于接口来说,这种关系叫做实现。继承是一种“is-a”关系。依赖:简单的理解,就是一个类A中的方法使用到了另一个类B。这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到类A。比如说,我想打篮球,首先需要一个类来代表我自...原创 2020-03-02 13:49:26 · 894 阅读 · 1 评论 -
Java设计模式之适配器模式(Adapter模式)
在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器。在软件设计中也可能出现:需要开发的具有某种业务功能的组件在现有的组件库中已经存在,但它们与当前系统的接口规范不兼容,如果重新开发这些组件成本又很高,这时用适配器模式能很好地解决这些问题。适配器模式(Ad...转载 2020-03-02 10:54:58 · 185 阅读 · 0 评论 -
Java设计模式之装饰模式
通常情况下,扩展一个类的功能会使用继承方式来实现。但继承具有静态特征,耦合度高,并且随着扩展功能的增多,子类会很膨胀。如果使用组合关系来创建一个包装对象(即装饰对象)来包裹真实对象,并在保持真实对象的类结构不变的前提下,为其提供额外的功能,这就是装饰模式的目标。下面来分析其基本结构和实现方法。一、模式的结构装饰模式主要包含以下角色。抽象构件(Component)角色:定义一个抽象接口以...转载 2020-03-01 23:06:43 · 120 阅读 · 0 评论 -
Java设计模式之多线程环境下的单例模式(Singleton)
单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。public class Singleton { // 持有私有静态实例,防止被引用,此处赋值为null,目的是实现...原创 2020-03-01 21:24:53 · 235 阅读 · 0 评论 -
Java设计模式之抽象工厂模式(Abstract Factory)
工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。因为抽象工厂不太好理解,我们先看看图,然后就和代码,就比较容易理解。发送邮件的接口public interface ...转载 2020-03-01 21:09:32 · 149 阅读 · 0 评论 -
设计模式的六大原则与23种设计模式
1、开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2、里氏代换原则(Liskov Substitution Principle)里氏代换原...转载 2020-03-01 19:48:06 · 431 阅读 · 0 评论 -
Java设计模式之策略模式
定义一组算法(每个算法都是一个类),将每个算法都封装起来(实现同一个接口),使得它们之间可以相互替换(具体策略类)。策略模式让算法独立于调用它的客户端而独立变化。代码下载地址:https://pan.baidu.com/s/1bbyS8Z_N77BxGoAR8norAw/** * 策略模式接口 */public interface Animal { public void...原创 2019-09-26 15:53:32 · 152 阅读 · 0 评论