设计模式
文章平均质量分 68
luweifeng1983
求真务实、踏实能干、为兴趣而开发。。
JAVA学习书目介绍
1、JAVA入门与精通
2、JAVA核心技术卷
3、JAVA编程思想
4、JAVA解惑
5、JAVA设计模式
6、J2SDK API
7、HTTP协议
8、Servlet与JSP核心编程第二版
9、J2EE API
10、J2EE应用与BEA Weblogic Server
11、J2EE核心模式
12、精通EJB(第二版)
13、开源框架SSH相关
学JavaScript不得不读的8本书
http://w
展开
-
JAVA设计模式学习之----创建模式:单例模式
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。主要用于连接池的设计。。如:形式一public class Singleton { private static Singleton st = new Singleton(); private Sin原创 2008-12-24 13:48:00 · 928 阅读 · 0 评论 -
创建型(单例模式)
package com.lwf.create.singleton;public class Singleton { private Singleton(){} private static Singleton st = new Singleton(); public static Singleton getInstance(){ return st; } publ...原创 2010-01-26 11:39:43 · 68 阅读 · 0 评论 -
深入浅出设计模式九——模板方法模式(行为型)
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Te m p l a t e M e t h o d 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。UML图:示例:在星巴兹有泡咖啡和泡茶两种饮料他们的泡制方法如下:看一下解析的类图:具体代码:package com.lwf.templatemethod;pub...原创 2010-07-14 16:12:25 · 131 阅读 · 0 评论 -
深入浅出设计模式十三——代理模式(结构型)
以下两篇文章分别讲了静态代理与动态代理http://quicker.iteye.com/blog/571494http://quicker.iteye.com/blog/571493 代理模式:为另一个对象提供一个替身或占位符以控制对这个对象的访问.控制访问的方式:1.远程代理控制访问远程对象2.虚拟代理控制访问创建开销大的资源3.保护代理基于权限控制对资源的...原创 2010-07-16 11:29:31 · 109 阅读 · 0 评论 -
代理模式\装饰模式\适配器模式区别
代理模式\装饰模式\适配器模式它们有相似性,那么具体在什么情况下运用呢?特性:装饰模式: 以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;装饰能将类包装很多层,从而优化类结构. 装饰不会创建对象代理模式: 给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用;有时候会创建对象. 在远程方法调用使用远程代理...原创 2010-07-16 17:16:45 · 189 阅读 · 0 评论 -
深入浅出设计模式十——迭代模式
我原创 2010-07-19 14:24:16 · 74 阅读 · 0 评论 -
深入浅出设计模式十二-状态模式(行为型)
定义:状态模式: 允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类.UML图 UML解析: 示例程序:如上面所示,我们有四个不同的状态,以及四个不同的操作,每个操作都可能改变状态.运用状态模式代码如下:package com.lwf.state;public interface State { public void ...原创 2010-07-20 16:27:02 · 138 阅读 · 0 评论 -
创建型——Builder模式
UML: 如何使用:假设一个复杂对象由多个部件组成的。Builder模式是把复杂对象的创建和部件的创建分别开来,分别用Builder类和Director类来表示。package com.lwf.create.builder;public interface Builder { //用于复杂对象的创建,而其部件的组装在Director类中。 void buil...原创 2010-02-04 16:04:31 · 98 阅读 · 0 评论 -
深入浅出设计模式八——Facade模式(结构型)
外观模式定义:外观模式:提供一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高级接口,让子系统更容易使用. UML图:一个典型的例子就是家庭影院系统:如果想看电影可能需要用到多个子系统:如:电源开关,电视机开关,碟片机开关,灯光开关等等接口.那么可不可以提供一个统一的接口给我,我可以通过watchMovie方法就可以完成所有子系统的功能呢?可以定义一个接口,并...2010-02-22 15:06:00 · 107 阅读 · 0 评论 -
深入浅出设计模式七——Adapter模式(结构型)
将两个不兼容的类或者说没有关系的类纠合在一起使用。就要在使用中间类,这个类即指适配器类。如:有两种类打方形桩类和打圆形桩类。现在我们即需要打方形桩又需要打圆形桩。那么需要利用继承和组合的特性来创建适配器类。package com.lwf.object.adapter;public class SquarePeg { public void insert(String st...原创 2010-02-22 15:45:00 · 165 阅读 · 0 评论 -
深入浅出设计模式一——Duck设计(策略模式)
以下为针对上图所列代码:package com.lwf.design.learn;public abstract class Duck { Flyable flyable; Quackable quackable; public void swim(){ System.out.println("duck is swim"); } publi...原创 2010-02-26 18:04:58 · 960 阅读 · 0 评论 -
深入浅出设计模式二——WeatherData设计(观察者模式)实现一
UML详细图良好的OO设计必须具备可复用、可扩展、可维护三个特性。观察者模式: 出版者+订阅者=观察者模式 条件:订阅者向出版者订阅报纸; 出版者一旦有新报纸或有更新的报纸,就会给订阅者送达; 当订阅者不想再看报纸的时候,可取消订阅,这样出版者不再向取消订阅者送报纸; 只要报社还在运营,就会有人向他们订阅报纸。 这里将出版者抽象为S...原创 2010-03-01 14:31:36 · 382 阅读 · 0 评论 -
深入浅出设计模式二——WeatherData设计(观察者模式)实现二
在上文:深入浅出设计模式二——WeatherData设计(观察者模式)实现一我们利用了自己缩写的Subject和Observer类完成了天气预报系统。在JAVA API中已有写好的观察者模式供我们使用,本文将利用它们重新写一个天气预报系统。在java.util包中有两个类可观察者Observable和观察者Observer。分别相当于Subject类和Observer类。在Obse...原创 2010-03-02 17:24:43 · 496 阅读 · 0 评论 -
深入浅出设计模式三——Beverage实现(装饰者模式)
上图的实现代码见:http://quicker.iteye.com/blog/554032定义:装饰者模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供比继承更有弹性的替代方案。设计原则五:代码应该对扩展开放,对修改关闭。Beverage系统是一个销售咖啡的订单系统,主要销售咖啡,咖啡有多种,另外有多个种类的调料。那么如果将Beverage设为超类,其它的咖啡调...原创 2010-03-03 17:31:39 · 294 阅读 · 1 评论 -
深入浅出设计模式四——比萨店生产比萨实现(工厂方法模式)
在http://quicker.iteye.com/blog/571714一文中已经讲了简单工厂和工厂方法并且有UML图和实现的代码。这里只结合实例分析一下工厂方法在实际生活中的应用。我们看看比萨店及比萨的图。 产品图。结合http://quicker.iteye.com/blog/571714中关于工厂方法模式的实现,不难得出实现代码:package com...原创 2010-03-04 17:11:07 · 936 阅读 · 0 评论 -
深入浅出设计模式十一——组合模式
3原创 2016-07-05 09:31:04 · 137 阅读 · 0 评论 -
创建型——工厂模式(抽象工厂)
UML图 特例图 以图的实现代码:package com.lwf.abstractfactory;public interface CPU { void getName();} package com.lwf.abstractfactory;public class MacCPU implements CPU { p...原创 2010-01-19 23:56:51 · 106 阅读 · 0 评论 -
行为型——Strategy(策略模式)
package strategy;public abstract class RepTempRule { public abstract void replace() throws Exception;} package strategy;public class RepTempRuleOne extends RepTempRule {...原创 2010-01-06 16:38:30 · 106 阅读 · 0 评论 -
结构型——Decorator(装饰模式)
Decorator 模式动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相比生成子类更为灵活。JAVA类库IO设计就采用Decorator 模式。 对于客户端来说,ConcreateComponent与Decorator的行为是一样的。可以在Decorator及子类中添加不同的行为。源码如下:public interface Work { v...原创 2009-12-22 17:39:11 · 102 阅读 · 0 评论 -
JAVA设计模式学习之----创建模式:工厂模式(工厂方法)
工厂模式分为工厂方法和抽象工厂。。工厂模式用于生成对象。。。一般我们生成对象使用new 如Person p = new Person();来实现,但我们在创建这个对象的时候可能要做一些其它的事情。。当然java中通过重载构造函数可以实现如Person p = new Person(String name);,但通过增加参数的方法还是不能满足我们的需求,如是如果我要新建对象的时候要进行数原创 2008-12-24 11:40:00 · 792 阅读 · 0 评论 -
JAVA设计模式学习之----创建模式:工厂模式(抽象工厂)
前面学习了工厂方法,那么现在假如有多个Person接口,如Person,Person2,实现两个接口的类分别为Zhangshan,Zhansi;Wangwu,Wangliu;那么这个时候工厂类应该怎么设计呢?当然可以分别设计两个工厂类来实现,不过因为他们有一定的关联性,所以我们应该将原来的工厂类抽象成抽象工厂,然后分别对这个类有两个实现类,在这两个实现的工厂类里面就可以分别产生出两组对象了。原创 2008-12-24 12:47:00 · 718 阅读 · 0 评论 -
JAVA反射机制事例二
import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class Test { /** * @param args */ public static void main(String[] args) { try { Class cl原创 2009-12-03 14:56:00 · 630 阅读 · 0 评论 -
读JAVA网络编程精解--服务器与客户端通信一
文中引用了孙老师的代码,并注明。import java.io.*;import java.net.*;public class EchoServer { private int port=8888; private ServerSocket serverSocket; public EchoServer() throws IOException { serv原创 2009-12-03 16:34:00 · 1051 阅读 · 0 评论 -
JAVA反射机制事例一
import java.lang.reflect.*;public class ReflectTester { public Object copy(Object object) throws Exception{ //获得对象的类型 Class classType=object.getClass(); System.out.println("Class:"转载 2009-12-03 12:38:00 · 633 阅读 · 0 评论 -
设计模式之——代理模式(静态代理)
代理类与委托类之间存在关联关系。它们共用一个接口。代理类自身并不真正的实现服务。而是通过调用委托类的实现。如下代码示例:接口类:package proxypackage;public interface HelloService { public void getName(String name); public void echoMessage(String msg);原创 2009-12-07 16:03:00 · 680 阅读 · 0 评论 -
设计模式之——代理模式(动态代理)
package proxypackage;public interface HelloService { public void getName(String name); public void echoMessage(String msg);} 接口实现类:package proxypackage;public class HelloService原创 2009-12-08 11:58:00 · 809 阅读 · 0 评论 -
JAVA反射示例三——远程方法调用事例
客户端与服务器端发送Call对象,该对象包括了将要在服务器端调用的类名,方法名,参数类型及参数值。服务器端读取Call对象,并利用反射机制调用对应的方法并返回值再发送给客户端。。程序代码来自于孙卫琴老师的《JAVA网络编程精解》第10章。package remotecall;import java.io.*;public class Call implements Serial原创 2009-12-10 17:06:00 · 2152 阅读 · 0 评论 -
MVC模式
MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更...2008-01-09 12:58:00 · 105 阅读 · 0 评论 -
深入浅出设计模式四——多区域比萨加盟店生产比萨实现(抽象工厂模式)
有关抽象工厂文章可先看:http://quicker.iteye.com/blog/575183在http://quicker.iteye.com/blog/607944 中我们使用工厂方法给不同地区的比萨店生产出相应口味的比萨。不过当时我们考虑的各个店同一种比萨的口味和用来生产的原料是一样的。比如纽约的芝士比萨和北京的芝士比萨口味与生产所用原料是一样的 。但是实际上各个地域不同,同一名称...2010-03-05 16:17:03 · 254 阅读 · 0 评论 -
深入浅出设计模式五——独一无二(单例模式)
先看文章 :http://quicker.iteye.com/blog/579948 public class Singleton { private Singleton(){} private static Singleton st = new Singleton();//这句话保证了线程安全。 //在类加载的时候初始化,new出对象,也就是说每加载一次类就new 一次 ...2010-03-08 15:34:16 · 88 阅读 · 0 评论 -
深入浅出设计模式六——封装调用(命令模式)
命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。UML图:解析UML图:示例:现在需要开发一个遥控器的API,当遥控器的某个按钮按下去之后,插座上对应的机器能够操作.如灯亮,风扇转等,但注意了插座对应的设备是可变化的,或者说仍有空余的插座是预留给新设备的.采用Command模式代码如下:...2010-03-08 15:35:18 · 182 阅读 · 0 评论 -
GRASP原则简介
GRASP(General Responsibility Assignment Software Pattern)是通用职责软件分配模式。GRASP的核心是自己干自己能干的事,自己只干自己的 事,也就是职责的分配和实现高内聚。用来解决面向对象设计的一些问题。GRASP提出了九大原则,下面笔者将对这九大设计原则做一一阐述。 高内聚、低耦合(High Cohesion、Low Coupling) ...2010-03-10 17:38:51 · 877 阅读 · 0 评论 -
创建型——工厂模式(工厂方法)
JAVA设计模式学习之----创建模式:工厂模式(工厂方法)工厂模式分为工厂方法和抽象工厂。。工厂模式用于生成对象。。。一般我们生成对象使用new 如Person p = new Person();来实现,但我们在创建这个对象的时候可能要做一些其它的事情。。当然java中通过重载构造函数可以实现如Person p = new Person(String name...2008-12-24 11:40:00 · 87 阅读 · 0 评论 -
设计模式
本文转自:http://liulve-rover-163-com.iteye.com/blog/503272转载公供个人学习之用汇总如下: 抽象工厂(Abstract Factory)模式: http://liulve-rover-163-com.iteye.com/blog/501216 简单工厂模式: http://liulve-rover-163-com.iteye.com/...原创 2009-12-18 13:13:51 · 145 阅读 · 0 评论 -
深入浅出设计模式十四——复合模式
3原创 2016-07-05 09:35:15 · 140 阅读 · 0 评论