设计模式一:简单工厂
2016-03-10 16:21
411 查看
我们平时设计结构是这样的:
Api:
Impl:
Client:
上面写得没错吧,在java的基础知识里面就是这么学的,难道有什么问题吗?
请仔细看谓语客户端的这句话:
然后再想想接口的功能和思想,发现了什么?仔细想想?
你会发现在客户端调用的时候,客户端不但知道了接口,同时还知道了具体的实现是Impl。接口的思想是“封装隔离”,而实现类Impl应该是被接口Api
封装并佟客户端隔离开的,也就是说,客户端根本就不知道具体的实现类是Impl。
问题描述:
在java编程中,出现只知接口而不知实现,怎么办。
来自为知笔记(Wiz)
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编程中,出现只知接口而不知实现,怎么办。
来自为知笔记(Wiz)
相关文章推荐
- [数据结构-后缀数组小结]
- bzoj2216: [Poi2011]Lightning Conductor
- ElasticSearch优化的一些方法
- Spark Streaming:大规模流式数据处理
- 《深入理解java虚拟机》学习笔记4——Java虚拟机垃圾收集器
- Sqlldr性能优化总结
- 实时推荐系统的3种方式
- docker使用场景
- elasticsearch中的mapping简介
- apache common book 笔记
- 面向对象的三个基本元素,五个基本原则
- myeclipse 上安装 Maven3
- happens befor 原则?
- 基于Spark MLlib平台的协同过滤算法---电影推荐系统
- nginx + keepalive
- org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x7)
- 各种 Java 的序列化库的性能比较测试结果
- es SynonymTokenFilterFactory 源码
- 实时流计算Spark Streaming原理介绍
- Redis键值设计