设计模式一:简单工厂

我们平时设计结构是这样的:
Api:
 
/***********************************************************************
 * Module:  Api.java
 * Author:  Administrator
 * Purpose: Defines the Interface Api
 ***********************************************************************/

import java.util.*;

/** @pdOid 2f5b6e94-3fa1-4784-a481-d765005b9d14 */
public interface Api {
   /** @param s
    * @pdOid 6e801a4e-6306-4e92-b14c-550d8e4fd592 */
   void test(String s);

}

 

Impl:
 
/***********************************************************************
 * Module:  Impl.java
 * Author:  Administrator
 * Purpose: Defines the Class Impl
 ***********************************************************************/

import java.util.*;

/** @pdOid ac83967b-49b8-4e97-aae0-3652fdef5522 */
public class Impl implements Api {
   /** @param s
    * @pdOid 67703a67-f6fc-41f9-80fe-224700304409 */
   public void test(String s) {
      System.out.println("输入的字符串为:"+s);
   }

}

 

Client:
/***********************************************************************
 * Module:  Client.java
 * Author:  Administrator
 * Purpose: Defines the Class Client
 ***********************************************************************/

import java.util.*;

/** @pdOid 88dd7659-f597-42eb-b277-9c25600f2385 */
public class Client {
   /** @param args
    * @pdOid e2f42e9d-51d0-422f-9935-018fbdd70a0b */
   public static void main(String[] args) {
           Api api = new Impl();
           api.test("大家好,初次咋到,请多多指教");
   }

}

 

 
 
上面写得没错吧,在java的基础知识里面就是这么学的,难道有什么问题吗?
请仔细看谓语客户端的这句话:
    Api api =newImpl();

 然后再想想接口的功能和思想,发现了什么?仔细想想?

你会发现在客户端调用的时候,客户端不但知道了接口,同时还知道了具体的实现是Impl。接口的思想是“封装隔离”,而实现类Impl应该是被接口Api
封装并佟客户端隔离开的,也就是说,客户端根本就不知道具体的实现类是Impl。
问题描述:
   在java编程中,出现只知接口而不知实现,怎么办。
 
 
 
 
 
 





posted @ 2016-03-10 16:21  众人皆醉,唯我独醒  阅读(119)  评论(0)    收藏  举报