设计模式之简单工厂(Factory method)
2011-11-07 15:34
363 查看
1.参考文献:
http://chjavach.iteye.com/blog/8003252.解析
在java编程中,我们要做到“面向接口编程”。下面回顾一些接口方面的知识:(1)Java中接口的概念
在Java中接口是一种特殊的抽象类,跟一般的抽象类相比,接口里面的所有方法都是抽象方法(也因此,接口中的方法可以加abstract,也可以不加),接口里面的所有属性都是常量。也就是说,接口里面是只有方法定义而不会有任何方法实现。
(2)接口用来干什么
通常用接口来定义实现类的外观,也就是实现类的行为定义,用来约束实现类的行为。接口就相当于一份契约,根据外部应用需要的功能,约定了实现类应该要实现的功能,但是具体的实现类除了实现接口约定的功能外,还可以根据需要实现一些其它的功能,这是允许的,也就是说实现类的功能包含但不仅限于接口约束的功能。通过使用接口,可以实现不相关类的相同行为,而不需考虑这些类之间的层次关系,接口就是实现类对外的外观。
(3)接口的思想
根据接口的作用和用途,浓缩下来,接口的思想就是“封装隔离”。通常提到封装是指对数据的封装,但是这里的封装是指“对被隔离体的行为的封装”,或者是“对被隔离体的职责的封装”;而隔离指的是外部调用和内部实现,外部调用只能通过接口进行调用,而外部调用是不知道内部具体实现的,也就是说外部调用和内部实现是被接口隔离开的。
(4)使用接口的好处
由于外部调用和内部实现被接口隔离开了,那么只要接口不变,内部实现的变化就不会影响到外部应用,从而使得系统更灵活,具有更好的扩展性和可维护性,这也就是所谓“接口是系统可插拔性的保证”这句话的意思。
(5)接口和抽象类的选择
既然接口是一种特殊的抽象类,那么在开发中,何时选用接口,何时选用抽象类呢?对于它们的选择,在开发中是一个很重要的问题,特别总结两句话给大家:
优先选用接口
在如下情况应选择抽象类:既要定义子类的行为,又要为子类提供公共的功能。(可以参考博客:Java 接口和抽象类区别,里面有详细在讲述)。
3.实例
下面列举一个简单的面向接口编程的例子。假设有一个接口叫Api,然后有一个实现类Impl实现了它,在客户端创建一个Impl的实例,把它赋值给一个Api接口类型的变量,然后客户端就可以通过这个变量来操作接口的功能了,此时具体的结构图如下图:
View Code
package edu.sjtu.erplab.yanmo.simplefactory; public class Client1 { public static void main(String[] args) { Api api=Factory1.createApi(); api.print("12312"); } }
相关文章推荐
- Java设计模式----------简单工厂类+工厂方法(FactoryMethod)
- iOS 设计模式之简单工厂方法模式(SimpleFactoryMethod)
- 设计模式(1)の创建型の工厂方法模式(Factory Method)の(普通|简单)工厂模式
- 设计模式之简单工厂(Factory method)
- 设计模式杂谈:创建型模式之工厂方法(Factory Method)
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 工厂模式(FactoryMethod) - Java实现
- 设计模式学习之简单工厂(Simple Factory,创建型模式)(1)
- 设计模式简单工厂模式(SimpleFactoryPattern)
- 设计模式(九)[简单工厂(Simple Factory)模式]
- 浅谈JAVA设计模式之——工厂方法(FactoryMethod)
- C++设计模式之三:Factory Method(工厂方法)
- Java设计模式——工厂方法(Factory Method)
- 设计模式-简单工厂模式/静态工厂方法(Static Factory Method)
- 设计模式的征途—2.简单工厂(Simple Factory)模式
- 设计模式之美:Factory Method(工厂方法)
- 设计模式 - 工厂方法(Factory Method) C++实现
- 设计模式示例一 Factory Method(工厂方法)
- 设计模式之简单工厂(Simple Factory)
- PHP设计模式:创建型之工厂模式(Factory Method)
- 【设计模式】创建型模式之工厂方法Factory Method