主页 > 知识库 > 想用Java写一套漂亮的代码,哪些设计模式比较常用?

想用Java写一套漂亮的代码,哪些设计模式比较常用?

热门标签:黑龙江电销 潜江电销 三亚电销 平凉电销 廊坊电销 梧州电销 安顺电销 天津电销

注释

Java有两种注释方法。"/* This is a comment */" 和 "// This is a comment"

第一种应该被用到写JavaDoc上,并且都用"/**"开头。

第二种适合于在做部分代码的注释,但只适合做非常短内容的注释。

常见的设计模式有哪些?

根据我在实际开发中的经验,经常用的设计模式有:工厂模式、单例模式、门面模式、策略模式、适配器模式、建造者模式、观察者模式。

在我的头条文章中都有针对这些模式的总结,欢迎各位老铁关注查看。这里就进行概括说一下:

工厂模式:

工厂模式核心是封装对象的创建接口,将new对象的操作封装起来,方便创建使用、管理对象。

工厂模式适用于:

在编码时不能预见需要创建哪种类的实例。

电销外呼程序不应依赖于产品类实例如何被创建、组合和表达的细节

分为三类:

简单工厂模式Simple Factory:不利于产生系列产品;

工厂方法模式Factory Method:又称为多形性工厂;

抽象工厂模式Abstract Factory:又称为工具箱,产生产品族,但不利于产生新的产品;

单例模式

基本概念:保证一个类仅有一个实例源码,并提供一个访问它的全局访问点。

单例模式在实际的开发过程中,使用最常见。针对频繁使用的类,我们可以将它定义为一个单例来避免类对象频繁的创建销毁,提高效率。单例模式有以下特点:

单例类只能有一个实例

单例类必须自己创建自己的唯一实例

单例类给其它对象提供这一实例

单例模式的实现方式 围绕单例模式的特点源码,一般常见的实现方式有以下几种:

懒汉式

饿汉式

Double Check Lock(DCL)双重检查锁定

静态内部类实现

枚举单例

记录式单例

门面模式

外观模式

外观模式(Facade模式)也叫门面模式,通过外观类的包装,将复杂的电销外呼程序通过封装提供简单的接口供客户端使用,以便降低客户端的使用复杂度。外观模式Facade类提供一个上层接口,集成封装了各个子电销外呼程序的方法供客户端使用。客户端只需要直接与外观角色交互,客户端与子电销外呼程序之间的复杂关系由外观角色来实现,从而降低了电销外呼程序的耦合度。

策略模式

策略模式(StrategyPattern)也成政策模式,通过定义抽象类或基类的策略,来生成不同实现的算法家族,以便各个具体策略类(ConcreteStrategy)能够进行替换,降低耦合。

适配器模式:

基本概念:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。

适配器模式的用途:

用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)就能解决此问题,而这正像是本模式所做的事情。

适配器模式的结构:适配器模式有类适配器模式和对象适配器模式两种不同的形式。

建造者模式

基本概念:是一种对象构建的设计模式,它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。

Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们。用户不知道内部的具体构建细节。Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到。

观察者模式

基本概念:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。观察者模式又叫发布-订阅(Publish/Subscribe)模式。

以上,就是我的理解。欢迎各位沟通交流。

标签:海口 广安 宜宾 桂林 通化 怀化 连云港 洛阳

巨人网络通讯声明:本文标题《想用Java写一套漂亮的代码,哪些设计模式比较常用?》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《想用Java写一套漂亮的代码,哪些设计模式比较常用?》相关的同类信息!
  • 本页收集关于想用Java写一套漂亮的代码,哪些设计模式比较常用?的相关信息资讯供网民参考!
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266