易截截图软件、单文件、免安装、纯绿色、仅160KB

Java设计模式之Facade模式

Java设计模式之Facade模式  GOF《设计模式》一书对Facade模式是这样描述的:
  为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统更加容易使用。
  大致意思是说:使用一种比原有方式更简单的办法与系统交互。例如,我们把一个很重要的文件,放在了第二抽屉里,而第二个抽屉的钥匙放在了第一个
抽屉里,我们要想取出这个文件,第一步肯定要拿到第一个抽屉的钥匙,然后打开它再拿出第二个抽屉的钥匙,最后打开第二个抽屉取出文件。
  我就上面说的那个情形写一下实现代码,首先我们要实现二个子系统,呵呵,把抽屉比喻成系统,有点夸张了(DrawerOne、DrawerTwo):
  class DrawerOne {
  public void open(){
  System.out.println("第一个抽屉被打开了");
  getKey();
  }
  public void getKey(){
  System.out.println("得到第二个抽屉的钥匙");
  }
  }
  class DrawerTwo{
  public void open(){
  System.out.println("第二个抽屉被打开了");
  getFile();
  }
  public void getFile(){
  System.out.println("得到这个重要文件");
  }
  }
  public class Client{
  public static void main(String []args){
  DrawerOne darwerOne=new DrawerOne();
  DrawerTwo darwerTwo=new DrawerTwo();
  darwerOne.open();
  darwerTwo.open();
  }
  }
由于没有使用Facade模式,可以看到要想得到这个文件要首先打开第一个抽屉,然后再打开第二个抽屉,在我们实际所开发的系统中,有时候客户要实
现某一操作,并不需要知道实现这一操作的详细步骤,而是简单地点击某一个按钮就可以得到自己想要的结果。下面对上面的代码使用Facade模式进行改进,
建立一个FacadeDrawer类:
  class DrawerFacade{
  DrawerOne darwerOne=new DrawerOne();
  DrawerTwo darwerTwo=new DrawerTwo();
  public void open(){
  darwerOne.open();
  darwerTwo.open();
  }
  }
  修改Client类:
  public class DrawerClient{
  public static void main(String []args){
  DrawerFacade drawer=new DrawerFacade();
  drawer.open();
  }
  }
  输出结果如下:
  第一个抽屉被打开了
  得到第二个抽屉的钥匙
  第二个抽屉被打开了


相关文档:

Java设计模式之:Iterator链表模式

先来了解一下链表模式的原理:
首先写一个JavaBean,内容是要添加的元素和该元素的节点。
public class NodeBean implements Serializable
{
   
    private Object data; //元素本身
    private NodeBean next; //下一个节点
   
  &n ......

java 转json

commons-beanutils-1.8.0.jar不加这个包
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean
commons-collections.jar 不加这个包
java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap
commons-lang-2.4.jar不加这个包
java.lang.NoClassDefFoundError: org/apa ......

Java 日期加減

public static void main(String[] args) {
   String DATE_FORMAT = "yyyy-MM-dd";
   java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
     DATE_FORMAT);
   Calendar c1 = Calendar.getInstance();
   c1.set(1999, 0, 14);
&n ......

总结几种Java字符串反转的实现方法

用三种方法来实现字符串的反转
/**
* @(#)ReverseString.java
*
* ReverseString application
*
* @author
* @version 1.00 2010/4/20
*/
import java.util.*;
import java.io.*;

public class ReverseString {


public static void main(String[] args) throws IOException{
......

Java程序员必去的网站(转)

英文网站
http://www.javaalmanac.com - Java开发者年鉴一书的在线版本,想要快速查到某种Java技巧的用法及示例的代码这是一个不错的去处.
http://www.onjava.com - O'Reilly的Java网站. 每周都有新文章.
http://java.sun.com - 官方的Java开发者网站 - 每周都有新文章发表.
http://www.developer.com/java - 由Gamelan ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号