Flywight Pattern, 即享元模式,用于减少对象的创建,降低内存的占用,属于结构类的设计模式.根据名字,我也将其会理解为 轻量模式. 下面是享元模式的一个简单案例. 享元模式,主要是重用已有的对象,通过修改部分属性重新使用,避免申请大量内存. 本模式需要主要两个点: 1. 对象的 key 应该是不可变得,本例中 color 作为 key,所以我在 color 前添加了 final 的修饰符. 2. 并非线程安全,多个线程同时获取一个对象,并同时修改其属性,会导致无法预计的结果. 代码…
Facade Pattern, 即外观模式,用于隐藏复杂的系统内部逻辑,提供简洁的接口给客户端调用,属于结构类的设计模式.我会将其名字理解为,门户模式. 下面是 Facade Pattern 的一个简单案例. Shape 定义一个接口,Circle, rectangle, Square 分别实现 Shape 接口,代表系统内部的一个功能.ShapeMaker 作为一个对外类,提供简洁的接口给外部调用. 代码实现: Shape 接口 public interface Shape { public…
Front Controller Pattern, 即前端控制器模式,用于集中化用户请求,使得所有请求都经过同一个前端控制器处理,处理内容有身份验证.权限验证.记录和追踪请求等,处理后再交由分发器把请求分发到对于的处理者. 前端控制器模式主要涉及下面三个角色 前端控制器(Front Controller) - 一个处理器用于处理全部的用户请求 分发器(Dispatcher) - 把处理后的请求分发到对于的业务处理程序 视图(View) - 真正处理请求业务程序 下面是前端控制器的一个简单案例.…
Observer Pattern,即观察者模式,当存在一对多关系,例如一个对象一有变动,就要自动通知被依赖的全部对象得场景,属于行为类的设计模式. 下面是一个观察者模式的简单案例. Observer 定义观察者的接口,定义需要观察的对象,已经被通知的接口.BinaryObserver, OctalObserver, HexaObserver 各自实现了 Observer 接口. Subject 是被观察的对象,记录了观察该对象的观察者列表,自身有变动,即可通知观察者列表中的各个观察者. 代码实现…
Meditor Pattern,即调解模式,用一个调解类类处理所有的沟通事件,使得降低多对象之间的沟通难度,属于行为类的设计模式.为了方便理解记忆,我也称其为,沟通模式. 下面是一个调解模式的简单案例. ChatRoom 提供公用发送短信的方法.User 全部通过 ChatRoom 类发送信息进行沟通.MediatorPatternDemo 演示调解模式. 代码实现 ChatRoom 提供发送信息的方法 public class ChatRoom { public static void sho…
Iterator Pattern,即迭代时模式,按照顺序依次遍历集合内的每一个元素,而不用了解集合的底层实现,属于行为类的设计模式.为了方便理解记忆,我也会称其为遍历模式. 下面是一个迭代器模式的简单案例. Iterator 定义了迭代接口, 仅 hasNext 和 next 两个方法.Container 定义了集合的接口,必须包含一个返回迭代器类 Iterator 的方法.NameRepository 是容器的具体类,实现 Container 接口,并拥有一个内部类 NameIterator…
Command Pattern, 即命令模式,把一个命令包裹在一个对象里面,将命令对象传递给命令的执行方,属于行为类的设计模式 下面是命令模式的一个简单案例. Stock 代表被操作的对象.Order 定义命令的接口,BuyStock, SellStock 是具体类,实现 Order 接口.Broker 是命令的执行方.CommandPatternDemo 演示命令模式. 代码实现 Order, 命令接口 public interface Order { public void execute(…
Proxy Pattern, 即代理模式,用一个类代表另一个类的功能,用于隐藏.解耦真正提供功能的类,属于结构类的设计模式. 下面是 代理模式的一个简单案例. Image 定义接口,RealImage, ProxyImage 都实现该接口.RealImage 具有真正显示功能,ProxyImage 作为代表,暴露给客户端使用. 代码实现: public interface Image { public void display(); } RealImage 的实现,提供真正的功能 public…
Filter Pattern,即过滤模式,通过不同的过滤标准,或者低耦合将过滤标准组合在一起,对一组对象进行过滤,属于结构类的设计模式. 下面是一个过滤模式的简单案例. Criteria 定义过滤接口,CriteriaFemale, CriteriaMale, AndCriteria, OrCriteria 类实现过滤接口.Person 是被过滤的对象.CriteriaPatternDemo 演示过滤模式. 具体代码: 过滤对象 Person 的实现 public class Person {…
Adapter Pattern, 即适配器模式,用于连接两个不兼容的接口,属于结构类的设计模式. 或者叫做,转换器模式. 下面是一个转换器模式简单案例. 假设已有 AudioPlayer 专门播放 mp3 格式文件,VlcPlayer 和 Mp4Player 是高级播放器,分别播放 vlc 和  mp4 格式文件,客户端代码调用 AudioPlayer 来播放 mp3 格式的文件. 此时,不想修改 AudioPlayer 和 AdvanceMediaPlayer 的接口,也不希望修改客户端 Ad…
Factory Pattern , 即工厂模式,用于创建对象的场景,属于创建类的设计模式 . 下面是一个工厂模式案例. Shape 作为接口, Circle, Square, Rectangle 作为具体类实现了 Shape 接口. ShapeFactory 封装了创建各个 Shape 的方式,隐藏了 new 命令.FactoryPatternDemo 用于演示工厂模式. 具体代码: Shape 接口定义 public interface Shape { public void draw();…
Singleton Pattern, 即单例模式,用于获取类的一个对象,该对象在整个应用中是其类的唯一对象.单例模式属于创建类的设计模式. SingleObject 作为单例类,内含了一个静态私有的 SingleObject 成员变量,将构造方法私有化使得外部无法构造 SingleObject 的对象,同时提供一个公共的 getInstance 方法,提供唯一的对象. 代码实现: 单例类 SingleObject public class SingleObject { private stati…
场景 适配器模式 总结 参考资料 场景 在编程中我们经常会遇到驴头不对马嘴的情况,比如以前是继承A的接口的对象,现在外部调用的时候需要该对象已B接口的形式来调用 ,这个时候我们可以让对象同时集成A和B接口来达到目的,不过,这样又违反了开闭原则,这个时候我们可以使用适配器模式来达到目的. 适配器模式 适配器模式是一种结构模式,可以帮助我们把对象以不同的接口方式来调用.主要由3个角色组成: Target 外部调用要求的接口方式 Adapter 中间用来协调的适配器 Adaptee 原始对象 首先,我…
This pattern involves a single class which provides simplified methods required by client and delegates calls to methods of existing system classes. /** * Design Patterns - Facade Pattern * https://www.tutorialspoint.com/design_pattern/facade_pattern…
简介: SSM框架是Spring,SpringMVC 和Mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,dao层四层. Spring实现对业务对象的管理,SpirngMVC负责请求的转发和视图管理,Mybatis作为数据对象的持久化引擎. 为什么要用ssm? 为什么使用mybatis? 1.数据库没有连接池,每次请求都会重新创建. mybatis:使用线程池 2.sql语句是写死在代码中,不利于代码维护. mybatis:在xml中…
简单记录一下大小括号在Linux中的用处. 1.${var},这是Linux中变量的原形.所以$var,别忘记了你的本来面目. # a= # echo $a # echo ${a} # echo ${a}b 10b 2.$(command)与`command`效果相同,意为用command命令执行得到的标准输出来替换$(command). # echo $(ls) temp1 temp2 #echo `ls` temp1 temp2 3.()与{}两者都是用来执行一串命令的.但是有区别的哦 #两…
Material Design (材料设计)是由谷歌创建和设计的一种设计语言,结合成功的设计的经典原则以及创新科技.谷歌的目标是开发一个设计系统,让所有的产品在任何平台上拥有统一的用户体验.全新的设计理念,采用大胆的色彩.流畅的动画播放,以及卡片式的简洁设计. 您可能感兴趣的相关文章 Material UI – Material Design CSS 框架 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTML5 & JavaScript 特效 Web 开发中很实用的10个效果[…
Servlet请求头response应用简单案例:访问AServlet重定向到BServlet,5秒后跳到CServlet,并显示图片: AServlet package cn.yzu; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; impo…
在上一篇 winform 与 html 交互 简单案例 中讲了winform与html之间的简单交互,接下来的内容是在winform中以html为中转站,实现将swf嵌入winform中并实现交互. 1.首先建立一个fla文件,函数ExternalInterface.addCallback("接口函数:来源js中",返回处理函数:as中接收js数据的相关处理);函数ExternalInterface.call("接口函数:来源js中",参数): as关键代码: va…
Ajax与ashx异步请求的简单案例: 前台页面(aspx): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=…
一.WPF概要 WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分.它提供了统一的编程模型.语言和框架,真正做到了分离界面设计人员与开发人员的工作:同时它提供了全新的多媒体交互用户图形界面.(MVVM是典型的WPF设计模式.view通过命令将所有用户的输入传递给viewmodel.view通过数据绑定从viewmodel中获得数据.model不了解viewmodel的情况,vie…
今天学习了近年来挺火的一门JS技术,叫vue.js下面是它的一个简单案例: <html> <head> <title>$Title$</title> //<script src="https://unpkg.com/vue"></script>//这是导入vue.js源码的一种方式,前提条件是在有网络的情况下. <script src="${pageContext.request.contextPa…
Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官方提供的demo中拿到必要的jar就行. 在apps/struts2-blank项目下 2.数据库准备 /* Navicat MySQL Data Transfer Source Server : GaGa Source Server Version : 50549 Source Host : lo…
本文主要分享下Spring Boot和Spring Kafka如何配置整合,实现发送和接收来自Spring Kafka的消息. 先前我已经分享了Kafka的基本介绍与集群环境搭建方法.关于Kafka的介绍请阅读Apache Kafka简介与安装(一),关于Kafka安装请阅读Apache Kafka安装,关于Kafka集群环境搭建请阅读Apache Kafka集群环境搭建 .这里关于服务器环境搭建不在赘述. Spring Kafka整合Spring Boot创建生产者客户端案例 创建一个kafk…
需求需要开发一个每天定时推送消息给微信用户,第一次接触quartz,简单案例 1. 先编辑要执行的任务 测试类代码 package com.wqq.test.quartz; import org.springframework.stereotype.Component; import com.wqq.assist.helper.DateHelper; /** * @author wangqq * @version 创建时间:2018年5月22日 下午2:11:44 * 日报表推送 */ @Com…
oracle  游标简单案例 一.案例: DECLARE IDO NUMBER; DABH CHAR); t_count ); CURSOR TJ_CURSOR IS SELECT IDO,DABH FROM ZLP_PERSONAL_INFO_115; BEGIN OPEN TJ_CURSOR; LOOP FETCH TJ_CURSOR INTO IDO,DABH; SELECT count(*) into t_count FROM TJ_TJJL_115 t WHERE GRID=IDO;…
Spring Data Solr简介 虽然支持任何编程语言的能力具有很大的市场价值,你可能感兴趣的问题是:我如何将Solr的应用集成到Spring中?可以,Spring Data Solr就是为了方便Solr的开发所研制的一个框架,其底层是对SolrJ(官方API)的封装. 简单案例: pom.xml <dependencies> <dependency> <groupId>org.springframework.data</groupId> <art…
Ajax与ashx异步请求的简单案例: 前台页面(aspx): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=…
如今,webpack.gulp等构件工具流行,有人说seajs.requirejs等纯前端的模块化工具已经被淘汰了,我不这么认为,毕竟纯前端领域想要实现模块化就官方来讲,还是有一段路要走的.也因此纯前端的模块化工具依然有价值,而且就我了解一些中小企业一直都在用纯前端的模块化手段. 如今,重新关注seajs和requirejs,不求理解多么深刻,要求会用能用就可以. 模块化的起因是传统的直接引入js方法存在问题: 必须通过全局变量共享模块,有可能会出现命名冲突的问题: 依赖的文件必须手动地使用标签…
Jedis Jedis是Redis官方推出的一款面向Java的客户端,提供了很多接口供Java语言调用.可以在Redis官网下载,当然还有一些开源爱好者提供的客户端,如Jredis.SRP等等,推荐使用Jedis. Spring Data Redis spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装,RedisTemplate提供了red…