设计模式
文章平均质量分 54
圆脸娃
输赢不重要,超神才是王道
展开
-
java observer观察者
前言对观察者比较有兴趣,感觉工作中的用的很多,最典型的就要算dubbo了,zk将提供者或者服务者的信息推送给对方,当然,提供者和消费者都要在zk进行注册,这里以班长通知学生上课下课为原型,简单说一下观察者模式的用法,这是自己的总结,难免有错误和不足,欢迎指正角色1.有一个subject,monitor实现subject,班长(monitor)的各项功能,如登记学生,通知上下课2.有原创 2016-08-03 11:47:48 · 279 阅读 · 0 评论 -
策略模式之策略枚举
在使用策略模式时,我们要创建相应的策略,然后根据不同的场景使用不同的策略,这是可以的,但毕竟那是一堆的策略类,使用起来代码的可读性、扩展性也就一般,这种情况下我们可以使用策略模式的升级版---策略枚举来解决上边的问题枚举类:public enum StrategyEnum { ADD("+") { @Override public int exec...原创 2018-08-18 22:31:58 · 3612 阅读 · 0 评论 -
Guava小工具之Supplier
最近在看Guava的源码,Supplier这个小工具比较有意思,今天聊一聊。 Supplier是一个接口,里面只有一个get方法,然后Suppliers类里面有两个内部类实现了这个接口,ExpiringMemoizingSupplier和MemoizingSupplier,它们主要是为了延迟获取在get方法中创建的对象,一个有超时时间,一个没有,其实也可以理解为将需要使用的东西做了一个懒...原创 2018-07-27 18:03:26 · 1713 阅读 · 0 评论 -
Guava小工具之Interners
大家都知道,String是final的,每次对它的操作都会产生新的String,这很大程度上是安全性的考虑,但是产生大量的String也是会有一些问题的,1.大量的String会对gc产生影响;2.两次 new String(“aa”)操作,产生的String不一样,如果用这两个去做synchronized(String)操作就达不到想要的效果,因为synchronized必须是对同一个对象...原创 2018-07-28 15:21:10 · 6772 阅读 · 2 评论 -
Java类加载机制ClassLoader之ContextClassLoader
1.java的classLoader加载机制大家都比较清楚,就是委托机制,如下这种机制就是,加载一个类的时候,会一直向上委托,如果BootStrapClassLoader加载不到,然后再依次往下加载,如果最后SystemClassLoader也加载不到,则会抛出classNotFoundException。2.现在我们来说说其他的,说之前先说说两个概念,这个是转述别人的(http:原创 2017-09-22 18:19:26 · 3643 阅读 · 0 评论 -
java抽象工厂模式
抽象工厂public abstract class AbstractFactory { public abstract Lion createLion(); public abstract LanPang createLanPang();}默认工厂public class DefaultFactory extends AbstractFactory{ @O原创 2016-10-10 14:11:53 · 303 阅读 · 0 评论 -
java--简单工厂设计模式
产品接口public interface Dota { public void hero();}工厂接口public abstract class DotaFactory { public abstract Dota hero();}具体产品public class LanPang implements Dota { @Override原创 2016-10-10 13:56:46 · 349 阅读 · 0 评论 -
java命令模式
命令模式可以简化编程命令接口public interface Comand { public void process(String str);}处理命令接口public class Process { public void process(String str,Comand command){ command.process(str);原创 2016-10-10 13:45:25 · 345 阅读 · 0 评论 -
最安全的单例模式--java使用内部类实现单例模式
实现类public class Singleton { private static class LazyHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton (){} publi原创 2016-10-10 12:57:55 · 16282 阅读 · 1 评论 -
java设计模式--动态代理
被代理类要实现的接口public interface Subject { public void rent(); public void hello(String str);}实际被代理类public class RealSubject implements Subject { @Override public void rent() {原创 2016-10-10 12:49:10 · 227 阅读 · 0 评论 -
倒排索引学习笔记
为什么叫倒排索引呢,我的理解:正常的查找应该是这样的倒排索引是这样的:就是说,正常的查找是在文件中查找某个单词;而倒排索引是根据单词查找某个文件倒序索引有几个概念:1.文档:就是我们通常使用的文档,如word,html网页等2.单词:是将文档中的内容进行拆分,找出来逻辑上构成一个完整表述的字符串3.字典:存储所有单词,每一条记录由单词和指向倒排列表的指针原创 2016-08-18 11:36:06 · 1429 阅读 · 0 评论 -
java build设计模式
使用场景:1.构造函数参数非常多的情况,这种情况下,如果构造传入大量参数,程序的可读性会非常差2.有一些构造函数的参数必须需要传入创建思路:1.现在通常做法是,在builder内部有一个内部类,这个负责创建需要的对象,然后将对象通过外部类的构造函数传进去,构造我们需要的builder类2.这和典型的四人帮builder模式是有点不一样的,但设计模式不就是给个模板,然后让使用者自原创 2016-08-03 10:23:17 · 367 阅读 · 1 评论 -
设计模式6大原则简约版
单一职责原则(Single Responsibility Principle)定义最直白的定义,就是一个类只负责一项职责问题可能都会觉得这个没什么的,很容易做到,但就是存在一种叫做职责扩散的问题:A类本来只负责一项职责a,然后有一天a要被细化成两个职责b,c,这个时候大多数人会觉得重新创建类实现b,c比较麻烦,所以就直接在A中做了改动,这就违背了单一职责原则,如果有一天,还要细化职原创 2016-08-04 18:53:26 · 338 阅读 · 1 评论 -
java 策略模式
前言策略模式也比较常用,在一个主体的前提下,可能会更换或者使用多种方式去做事情;策略模式就是让你代码结构不变的情况下,动态添加功能,只要实现统一的接口就可以了。这种方式,对程序的扩展有很大的帮助。角色1.一个统一的接口,所有具体的策略都要实现这个接口,从而统一程序逻辑框架2.具体的策略实现类,实现上边的接口,实现自己特有的功能3.一个组装类,上边的具体策略可以通过这个类随时实现原创 2016-08-03 18:51:48 · 413 阅读 · 0 评论 -
java 责任链模式
前言责任链感觉用的也不少,尤其是当各种系统启动的时候,要初始化好多东西,并且这些启动都是有一定的顺序,谁在前,谁在后,谁是必须启动的,谁是暂时可以不启动的;还有就是web请求过来的时候,需要一级级去处理,这些处理过程,都有一些内在的逻辑,而这些东西对外部请求都是不可感知的,只会在请求处理完毕之后(正常或着异常结束),会返回给外部或者调用端信息,告诉成功执行结果或者告诉异常信息角色1.要原创 2016-08-03 14:42:48 · 846 阅读 · 0 评论 -
基于注解的可校验泛型的参数校验工具
基于注解的校验工具很多,但有些不是很符合自己的场景,自己写了一个,亲测可用可以校验入参中的单个参数、列表、带泛型的列表(List<String>),但是嵌套的泛型(List<List<String>>)不能校验:注解类:package com.mhc.gw.sti.api.jd.util;import java.lang.annotation....原创 2018-08-28 11:21:37 · 2052 阅读 · 0 评论