文档章节

Java设计模式

Carl_
 Carl_
发布于 2015/06/16 16:47
字数 616
阅读 113
收藏 4
点赞 0
评论 0

设计模式就是一组成熟的解决方案

  1. 简单工厂模式(SimpleFactory)

    定义:

          提供一个创建对象实例的功能,而无须关系其具体实现.被创建实例的类型可以是接口/抽象类/具体类.

        优点:

            1.帮助封装

                    非常友好的,实现了组件的封装,然后让组件外部能真正面向接口编程.

            2.解耦

                    实现了客户端与具体实现类的解耦.

        缺点:

            1.增加了客户端的复杂度

            2.不方便扩展子工厂

        简单工厂本质就是选择实现.


    2.外观模式(Facade)

        定义:

               为子系统的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易           调用.

        优点:

            1.外观模式松散了客户端与子系统的耦合关系

                    让子系统内部的模块更容易扩展和维护.

            2.简单易用

                    客户端不再需要了解子系统内部的实现,也不需要跟众多子系统内部的模块做交互,只需要跟外观交互                             即可,相当于外观类为外部客户端使用子系统提供了一站式服务.

            3.更好的划分访问的层次

                    把需要暴露给外部的功能几种到外观中,这样既方便客户端使用,也很好的隐藏了内部的细节.

        缺点:

            过多的Facade或者是不太合理的Facade容易让人迷惑,到底是调用Facade好,还是直接调用模块好.

        外观模式本质封装交互、简化调用


        3.适配器模式(Adapter)

            定义:

                    将一个类的接口转换为客户需要的另一个接口.适配器模式使得原本接口不兼容不能在一起工作的那些类可              以一起工作.

            优点:

                1.更好的复用性

                2.更好的可扩展性

            缺点:

                过多的使用适配器,会让系统非常凌乱,不容易整体进行把握.

            适配器本质转换匹配、复用功能


           4.单例模式(Singleton)

              定义:

                      保证一个类仅有一个实例,并提供一个访问它的全局访问点.

               单例模式本质控制实例数目.


            5.工厂方法模式(FactoryMethod)

                定义:

        示例代码:https://git.oschina.net/carlcase/javacase.git

© 著作权归作者所有

共有 人打赏支持
Carl_
粉丝 39
博文 387
码字总数 12168
作品 0
广州
简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别

转载:原地址http://www.cnblogs.com/zhangchenliang/p/3700820.html 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别 结合简单示例和UML图,讲解工厂模式简单原理。 一、引子 话说...

法斗斗 ⋅ 05/08 ⋅ 0

java开发中的常用的设计模式

设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代...

qq_38024548 ⋅ 05/28 ⋅ 0

为什么我墙裂建议大家使用枚举来实现单例。

关于单例模式,我的博客中有很多文章介绍过。作为23种设计模式中最为常用的设计模式,单例模式并没有想象的那么简单。因为在设计单例的时候要考虑很多问题,比如线程安全问题、序列化对单例的...

⋅ 06/10 ⋅ 0

Java 设计模式 之 单例模式 Singleton 实际应用

Java 设计模式 之 单例模式 Singleton 实际应用 http://www.verejava.com/?id=16998954233354

verejava ⋅ 05/24 ⋅ 0

Java篇-接口interface关键字

一 : interface关键字 接口是与类并行的一个概念 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,...

TianTianBaby223 ⋅ 04/24 ⋅ 0

Java 设计模式(14) —— 复合模式

一、复合模式 模式常一起使用,组合在一个设计解决方案中 复合模式在一个解决方案中结合两个或多个模式,能解决一般性或一系列的问题 二、示例 本次设计模式讲解中无代码示例,由于复合模式是...

磊_lei ⋅ 05/26 ⋅ 0

【唯品会】设计模式在特卖会的应用与思考

设计模式在特卖会的应用与思考 无心之心,道之所存 --《建筑的永恒之道》 1、开篇 之所以讨论设计模式,是因为当前我们都明白它可以提供优雅的解决方案,有利于在团队项目中建立共识,并且无...

暗夜在火星 ⋅ 2016/11/12 ⋅ 0

Decorator设计模式的实现中 装饰设计模式学习笔记

装饰设计模式 a)当某个类的某个方法不适应当前业务的需要 思路: 》扩展父类的可供扩展的方法,可以使有,但不优 》装饰设计模式(推荐) 开发步骤: 5)对于满足需求的方法,直接调用被包装的对...

知止内明 ⋅ 04/19 ⋅ 0

Java设计模式之单例设计模式

Java单例设计模式,有多种实现方式,下面介绍一下比较著名的一些实现方式 饿汉式 这种设计模式简单,且没有多线程安全问题,一般实际开发时选用这种方式。 class HungeryDemo{private Hunger...

技术小胖子 ⋅ 2017/11/08 ⋅ 0

详解Proxy代理模式的场景分析

代理模式是一个十分优秀的软件架构模式,许多应用都用到了代理模式。代理模式就是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不合适或者不能直接引用另一个对象,...

Java架构 ⋅ 05/30 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)

之前没接触过证书加密的话,对证书相关的这些概念真是感觉挺棘手的,因为一下子来了一大堆新名词,看起来像是另一个领域的东西,而不是我们所熟悉的编程领域的那些东西,起码我个人感觉如此,且很长...

颖辉小居 ⋅ 16分钟前 ⋅ 0

利用有限制通配符提升API灵活性(28)

1、参数化类型是不可变的 List<String> 不是List<Object>的子类,但是二者是有联系的 利用有限制的通配符类型处理类似情况 List<? extends Object>(生产者) Collection<? super E>(消费者......

职业搬砖20年 ⋅ 22分钟前 ⋅ 0

ssm框架 +bootstrap分页

这里有两种方式 方式一:自己写分页 方式二:使用插件PageHelper 1.自己写分页 1.1 效果 1.2 实现过程 1.2.1 创建分页公共类 //---------------------------1.属性-------------------------...

Lucky_Me ⋅ 29分钟前 ⋅ 0

Istio

helm template install/kubernetes/helm/istio --name istio --namespace istio-system > $HOME/istio.yaml after $ kubectl create namespace istio-system$ kubectl create -f $HOME/ist......

openthings ⋅ 30分钟前 ⋅ 0

内核线程、轻量级进程、用户线程

线程与进程概念 在现代操作系统中,进程支持多线程。 进程是资源管理的最小单元; 线程是程序执行的最小单元。 即线程作为调度和分配的基本单位,进程作为资源分配的基本单位 一个进程的组成...

117 ⋅ 35分钟前 ⋅ 0

elasticsearch2.4.6升级为elasticsearch-5.5.0的经历

将elasticsearch-5.5.0 中的配置 path.data 指向原来的数据路径 即 path.data: /usr/local/src/elasticsearch-2.4.6/data 注意: elasticsearch-5.5.0 需要将jdk版本升级到1.8...

晨猫 ⋅ 35分钟前 ⋅ 1

lvm讲解 磁盘故障小案例

1

oschina130111 ⋅ 40分钟前 ⋅ 0

那些提升开发人员工作效率的在线工具

本文转载自公众号 Hollis 作为一个Java开发人员,经常要和各种各样的工具打交道,除了我们常用的IDE工具以外,其实还有很多工具是我们在日常开发及学习过程中要经常使用到的。 Hollis偏爱使用...

时刻在奔跑 ⋅ 52分钟前 ⋅ 0

restful风格 实现DELETE PUT请求 的web.xml的配置

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframe......

泉天下 ⋅ 57分钟前 ⋅ 0

Shell数组

Shell数组 Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。 bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数...

蜗牛奔跑 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部