设计模式
chiweitree
码农
展开
-
代理模式Proxy(静态代理)在程序运行前,代理类的.class文件就已经存在了
我们在设计系统时,往往启动一个系统,发现非常慢,好一段时间,整个系统才启动完毕,这个过程中其实有很多都是在加载组件,也就是在加载你写的类其实呢,我们并不需要在启动时,就加载这么多的类及其方法,比如数据库的查询,我们大可以不加载它,而是等到我们真正调用数据库查询时才去加载它这其实就是延迟加载的思想:如果当前并没有使用这个组件,那么我们就不去加载这个组件,等到真正使用的时候,再原创 2012-11-01 16:48:43 · 1640 阅读 · 2 评论 -
Amdahl(阿姆达尔)定律
Amdahl是计算机科学中的一个非常重要的定律,定义了串行系统并行化后加速比的计算公式和理论上限。加速比=优化前系统耗时/优化后系统耗时加速比越大,表明性能优化的越明显Amdahl给出了加速比与系统并行度和CPU数量的关系加速比=Speedup系统内必须串行化的程序比重FCPU个数NSpeedup根据此公式,当CPU数量趋于无原创 2012-11-27 14:48:07 · 2573 阅读 · 0 评论 -
抽象工厂模式、简单工厂模式、工厂模式的区别
工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例。 区别:工厂方法模式只有一个抽象产品类,而抽原创 2013-09-23 13:59:46 · 1500 阅读 · 0 评论 -
JAVA中常用设计模式 分析详解
单例模式,参见本人以前的文章:http://blog.csdn.net/simonchi/article/details/8136658工厂模式:定义一个用于创建对象的接口,工厂类就是一个抽象的接口,里面有很多方法,然后生产出来的产品就是一个一个具体的类,有具体的方法实现。实例1:package org.jzkangta.factorydemo01;原创 2013-09-03 16:34:52 · 1343 阅读 · 0 评论 -
Observer -- 观察者模式
package observer;public interface Subject { void attach(Observer observer); void detach(Observer observer); void inform(); }package observer;public interface Observer { void u原创 2012-11-27 16:57:13 · 887 阅读 · 0 评论 -
Future模式,并发程序的设计模式
先举个简单的例子当你在网上购物时,如果付款成功了,你是否立即拿到了你买到的商品?当然不是,当你付款成功时,你得到的仅仅是一个,订单提交成功的提示而已,其它的什么都没了,从这一刻开始,你是否会一直呆在家里,什么都不做,直到你的商品送到你手中呢?当然也不是,当你订单提交成功后,你会去做你该做的,当你的商品送到时,你只需签收一下即可,从订单提交到商品送到之间,你不会因为等待商品送到而耽误你的原创 2012-11-14 10:50:12 · 1832 阅读 · 0 评论 -
Master-Worker模式,并行设计模式,分配,执行
Master相当于总经理,他接到任务后,将任务进行划分,然后分配给下属,就是workers,让下属的所有workers并发的去执行子任务,异步的,互不影响,完成后,提交给经理。原创 2012-11-14 14:33:11 · 1415 阅读 · 0 评论 -
不变模式,并行设计模式
所谓不变模式:一个对象,一旦被创建了,那么它的内部状态将永远不会发生改变,没有一个线程可以修改其内部状态和数据,而且其内部状态也绝对不会自行发生改变。所以呢,对于不变对象,我们的多线程操作也就不需要进行同步控制了。不变模式和只读模式的区别:只读模式,是对象本身不能被其它线程修改操作,但是对象的自身状态却可以自行修改,比如对象的存活时间。那么,如何才能做到让一个对象是不变原创 2012-11-14 14:54:52 · 890 阅读 · 0 评论 -
享元模式(FlyWeight)个人认为是局部单例模式的意思
核心思想:如果在一个系统中存在多个相同的对象,那么只需共享一份对象的拷贝即可,不必每次都新建一个对象。比如说图书馆,学生可以自行查询图书馆的图书信息,假设现在是分院系使用,每个院系可以自行查询本院系的一些图书比如有计算机学院,信息学院,两个学院,每个学院都有1000人,那么共2000人,每个院系的1000人去查询本院系的图书时,我们是否需要给1000个人每个人都去创建一个数据库的查原创 2012-11-02 14:01:35 · 1067 阅读 · 0 评论 -
代理模式Proxy(动态代理)在程序运行时,运用反射机制动态创建而成
使用JDK动态代理生成代理对象,只能代理实现了接口的类public class JDKProxy implements InvocationHandler { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // TODO Auto-g原创 2012-11-02 10:28:32 · 1696 阅读 · 0 评论 -
单例设计模式Singleton
单例设计模式是设计模式中最为普通的模式之一是一种对象创建模式,确保系统中一个类只产生一个对象实例,那么这样有什么好处呢?1、对于频繁使用的对象,可以省略创建对象所花费的时间,使用之前创建的且唯一存在的对象2、由于只创建一次,所以new操作会大大减少,那么对系统内存的使用频率会大大降低,这会减轻GC压力,缩短GC停顿时间我们来想想如何才能实现单例呢,从单例的概念中来看,单例模原创 2012-11-01 15:25:35 · 973 阅读 · 0 评论 -
【码出高效】craft the code , code the craft,各种代码汇总
该文主要将自己平时的积累的知识,或者认为重要的东西,以代码的形式分享出来或者记录下来,供自己也供大家一起来学习探讨。工程链接如下:github链接:https://github.com/cwtree/craft_the_code.git至于工程的内容,大家clone该工程后,通过package name就能简单区分出来了。...原创 2019-03-26 22:57:38 · 1568 阅读 · 0 评论