概念模式
文章平均质量分 60
bloodnight
这个作者很懒,什么都没留下…
展开
-
工厂方法模式
工厂方法模式区别于简单工厂的地方是前者克服了后者违背了开闭原则的缺点,即当要新增产品时,不需要修改工厂类,而只需新增一个子工厂即可,将选择判断搬移到了客户端去实现,更大程度实现了OO...2009-09-16 15:11:59 · 69 阅读 · 0 评论 -
何时使用LSP
当使用subclass无法满足LSP(Liskov Substitution Principle)时,可以考虑delegation, composition, aggregation来替代,能更好地实现程序的flexible,reusable,maintainable.2011-01-24 09:12:45 · 116 阅读 · 0 评论 -
Factory Method
how does the factory method pattern apply to the reality?where can we find a factory method application in real life? let me guess: there's a factory, which manufactures a set type of produc...2011-05-27 23:46:31 · 80 阅读 · 0 评论 -
关于Arrays.sort()方法用到的设计模式
/** * Src is the source array that starts at index 0 * Dest is the (possibly larger) array destination with a possible offset * low is the index in dest to start sorting * ...2011-02-18 09:12:16 · 252 阅读 · 0 评论 -
Observer Pattern
consistent communication model for full article please refer to: http://people.scs.carleton.ca/~ldnel/2404notes/330_patterns/GammaPatterns/Observer/ many dependent objects, and a subj...2011-06-15 11:32:14 · 94 阅读 · 0 评论 -
Several thread-safe singleton collection
1. static inner class public class Singleton { // Private constructor prevents instantiation from other classes private Singleton() { } /** * SingletonHolder is loade...2011-02-24 10:19:51 · 73 阅读 · 0 评论 -
Composite Pattern
http://userpages.umbc.edu/~tarr/dp/lectures/Composite.pdf Where should the child management methods (add(), remove(), getChild())be declared?1. In the Component class: Gives transparency, ...2011-06-17 09:12:50 · 121 阅读 · 0 评论 -
Bridge Pattern
IntentDecouple an abstraction from its implementation so that the two can varyindependently.Collaborations• Abstraction forwards client requests to its Implementor object.2011-06-17 11:59:12 · 76 阅读 · 0 评论 -
多任务同时执行完毕后方执行后续任务
多线程同时启动,执行完毕后启动新任务 1.传统join方式,等待所有线程执行完毕方才后续执行public class ThreadTest { interface Task extends Runnable { Object getResult(); } public static void main(String[] args) throws Interrupt...2010-12-02 10:20:20 · 268 阅读 · 0 评论 -
什么时候需要synchronized
当需要在某个方法上加synchronized关键字时,就会无形中概念被误导为该方法需要同步,实则真正需要同步的是某一个对象的方法,这是具有唯一性的东西,是独一无二的,多个线程同时执行时,才出现同步的需要,且强调是针对同一个“物体”,这样同一个类的方法未必是同一个物体,这里就可能会造成误解,虽然可能是一个小问题,但我觉得避免潜在的概念偏差是相当重要的。...2010-12-02 15:32:01 · 198 阅读 · 0 评论 -
Law of Demeter
http://en.wikipedia.org/wiki/Law_of_Demeter it's an important principle, also known as principle of least knowledge. In Object Oriented Programming When applied to object-oriented prog...2011-04-07 09:23:58 · 101 阅读 · 0 评论 -
我對多態的理解
多态(polymorphism)是以一种看待事物更细致的角度来描述事物(或者说以抓住了这种特质的独具慧眼的角度),事物多具有本质(共性),也有各种不同的变化形态(比如碳元素会有金刚石和石墨两种形态),各形态都有其独特作用,但是万变不离其宗,它们以共性相联,是基于这种独特而深刻的认识。当要利用这种物体的各个形态时,有形态变化的物体,使用起来更灵活。比如你事先预估到自己要用到人形机器人来让他干精细...2012-05-24 09:03:42 · 94 阅读 · 0 评论 -
Finalizer Guardian Idiom
Effective Java 2nd 中Item 7: Avoid finalizers關於Finalizer Guardian Idiom的論述: If a subclass implementor overrides a superclass finalizer but forgets to invokeit, the superclass finalizer will n...2012-05-30 11:55:10 · 178 阅读 · 0 评论 -
java语言中classes分类
local class的scope是local,所以在方法外不可见,这个三楼说过了。这里有总结:A class defined within another class is called a nested class. Like other members of a class, a nested class can be declared static or not. A ...2012-10-22 13:09:53 · 221 阅读 · 0 评论 -
how to defend against serialization and reflection attack for eager singleton
//为什么要定义构造方法因为不定义它也会有默认构造方法,而且是public的,不符合单例的设计模式要求这种eager singleton是线程安全的,因为JVM保证了静态变量只由classloader初始化一次,也因此意味着所有调用getInstance的线程只能得到同一个变量实例但是这种方法不足以保护其免遭reflection attack,因为反射可以改变私有变量的访问控制符A...2012-08-08 09:18:25 · 197 阅读 · 0 评论 -
Command模式图详解
上图是command模式结构图,各个符号重点应该理解,符号的解释可在下面寻找: http://blog.csdn.net/zhang1021wen122/archive/2009/08/04/4408415.aspx 时不时地来温习一下吧1.左空心菱形右箭头表示聚合2.实线箭头表示拥有,被箭头指向一方对对方一无所知3.虚线带空心三角表示实现...2011-01-12 16:53:07 · 216 阅读 · 0 评论 -
IOC inversion体现在什么地方
http://martinfowler.com/bliki/InversionOfControl.html 好莱坞经典模式就是:"don't call us, we'll call you!"这算是控制流的反转(本来A控制B,现在变成B控制A,反转),而对于程序中比如Spring的IOC,是框架来调用我而不是我调用框架The control is inverted - it...2011-01-12 16:02:37 · 97 阅读 · 0 评论 -
原型模式
原型模式实现了shallow clone和deep clone,从而避免大量地新建对象造成资源的严重消耗现在有这样一个模型:工作经历对简历是合成关系shallow clone即不复制工作经历而要实现deep clone,须如此:public Object clone() { Resume obj = new Resume(this.work); obj.name...2009-09-16 15:51:05 · 74 阅读 · 0 评论 -
单例模式中的双重锁定
所谓双重锁定,就是double-check locking,在instance未被创建时再进行加锁处理,以节省资源class Singleton { private static Singleton instance; private static final Object syncRoot = new Object(); private Singleton() { }...2009-09-23 15:03:57 · 91 阅读 · 0 评论 -
26 Hints for Agile Software Development
26 Hints for Agile Software DevelopmentBy Keith SwensonI collect nuggets of wisdom on various topics. Recently I havebeen going over the topic of Agile software development; what reallymatte...原创 2009-11-23 16:14:19 · 79 阅读 · 0 评论 -
开闭原则
Closed for Modification; Open for Extension 这原则不仅应用在编程中,在生活中也广泛存在,因为扩展是在不破坏原有体系的前提下增加功能,这是根本。...2010-03-15 13:58:28 · 69 阅读 · 0 评论 -
SwingWorker之Task应用一
import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import javax.swing.SwingWorker;public class Test { public static void main(String[] args) { new Test().go(...2009-08-06 14:26:36 · 84 阅读 · 0 评论 -
多态之RTTI
所谓RTTI,是Runtime Type Information //: typeinfo/Shapes.javaimport java.util.*;abstract class Shape { void draw() { System.out.println(this + ".draw()"); } abstract public String toS...原创 2010-01-21 16:58:32 · 84 阅读 · 0 评论 -
内部匿名类的某一简洁实现
通常,通过接口名来实现内部匿名类时,如果不希望不得不实现之方法造成繁琐的窘境,则须借助抽象类了,大凡都是以DefaultXxx之类的形式标榜于JDK之中:interface Test1 { public abstract void a();//just to test the abstract keyword void b(); void c();}ab...2009-08-10 15:00:19 · 66 阅读 · 0 评论 -
Apache Struts2 Architecture
Struts is a flexible control layer based on standard technologies like Java Filters, JavaBeans, ResourceBundles, Locales, and XML, as well as various OpenSymphony packages, like OGNL and XWork...2010-07-21 22:38:24 · 123 阅读 · 0 评论 -
Exception Translation & Exception Chaining
// Exception Translationtry { // Use lower-level abstraction to do our bidding ...} catch(LowerLevelException e) { throw new HigherLevelException(...);} // Exception Chaining...2009-08-19 16:25:48 · 86 阅读 · 0 评论 -
观察者模式与多线程
观察者模式是很常用、常见当然也相当重要的一种设计模式,其中主要包括的概念有:1.Observer(观察者,又具化作ActionListener)2.Observable(被观察者)3.Action(观察者所感兴趣的被观察者的行为) 被观察者主动与观察者建立契约关系(添加观察者),观察者本身具有行为发生被告知资格,即拥有行为响应方法,如actionPerformed,下面贴出一段...2009-08-25 13:52:17 · 130 阅读 · 0 评论 -
SwingWorker之Task应用二
/** * $Revision: 1.3 $ * $Date: 2009/08/13 03:01:49 $ * * Copyright (C) 2006 Jive Software. All rights reserved. * * This software is published under the terms of the GNU Lesser Public Lic...2009-08-31 15:31:01 · 95 阅读 · 0 评论 -
简单计算器UML类图
上图就是简单计算器UML类图,通过简单工厂模式来创造各种不同的运算类来提供运算能力,通过封装、继承、多态降低程序耦合度来提供较高的可维护性,可复用性和可扩展性。其中所谓1.可维护性:要修改哪里就可单独修改哪里,不会牵涉到其它非相关部分,导致一起再编译2.可复用性:其中的比如运算类(运算逻辑)可完整搬运到其它程序或平台上,而不必修改3.可扩展性:当要添加新的运算类,比如开平方或...2009-09-02 10:01:21 · 5294 阅读 · 1 评论 -
商场收银系统之策略模式
策略模式将各种策略即算法封装起来,让变化隔绝于客户端CashNormal,CashRebate,CashReturn即各种收银算法,第一表示正常收银,第二表示打折优惠,第三表示返利销售,即满多少送多少之类,客户端只要向CashContext传入策略算法类型就能获得对应的CashSuper对象,通过相同的接口(GetResult)获得对应的结果...2009-09-07 11:06:57 · 123 阅读 · 0 评论 -
代理模式
图示,代理模式在访问对象时引入一定的间接性来实现许多附加功能。2009-09-09 11:20:45 · 57 阅读 · 0 评论 -
URL definition
http://reg.163.com/login.jsp?type=1&url=http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight=1通用格式:protocol :// host / location 1. http://reg.163.com/http 通信协议名称:// 分隔符,一个...2012-08-14 08:29:18 · 596 阅读 · 0 评论