java 工厂模式小结
来源:互联网 发布:婚礼设计效果图软件 编辑:程序博客网 时间:2024/05/29 08:26
在项目开发过程中会比较经常遇到工厂模式。
1.不使用工厂模块的例子:
interface Printer{
public void open();
public void close();
public void print(String s);
}
class DEPrinter implements Printer{
public void open(){
System.out.println(" HPPrinter open");
}
public void close(){
this.clear();
System.out.println(" HPPrinter close");
}
public void clear(){
System.out.println(" HPPrinter clear");
}
public void print(String s){
System.out.println(" HPPrinter print" + s);
}
}
class HPPrinter implements Printer{
public void open(){
System.out.println(" HPPrinter open");
}
public void close(){
System.out.println(" HPPrinter close");
}
public void print(String s){
System.out.println(" HPPrinter print" + s);
}
}
class Test{
public static void main(String args[]){
//根据用户的选择,生成相应的打印机对象,并且向上转型为Printer类型
int flag = 0;
Printer printer = null;
if(flag == 0){
printer = new HPPrinter();
}else if(flag == 1){
printer = new DEPrinter();
}
printer.open();
printer.print("打印");
printer.close();
}
}
2.工厂模式实现
interface Printer{
public void open();
public void close();
public void print(String s);
}
class DEPrinter implements Printer{
public void open(){
System.out.println(" HPPrinter open");
}
public void close(){
this.clear();
System.out.println(" HPPrinter close");
}
public void clear(){
System.out.println(" HPPrinter clear");
}
public void print(String s){
System.out.println(" HPPrinter print" + s);
}
}
class HPPrinter implements Printer{
public void open(){
System.out.println(" HPPrinter open");
}
public void close(){
System.out.println(" HPPrinter close");
}
public void print(String s){
System.out.println(" HPPrinter print" + s);
}
}
/**
*工厂类
*/
class PrinterFactory{
public static Printer getPrinter(int flag){
Printer printer = null;
//向上转型为Printer类型
if(flag == 0){
printer = new HPPrinter();
}else if(flag == 1){
printer = new DEPrinter();
}
return printer;
}
}
class Test{
public static void main(String args[]){
//根据用户的选择,生成相应的打印机对象,并且向上转型为Printer类型
//Printer getPrinter(int flag);
// int flag = 0;
//Printer printer = null;
//if(flag == 0){
// printer = new HPPrinter();
//}else if(flag == 1){
// printer = new DEPrinter();
//}
int flag = 0;
//利用工厂类返回一个类对象,在工厂类里面向上转型成Printer父类。
Printer printer = PrinterFactory.getPrinter(flag);
printer.open();
printer.print("打印");
printer.close();
}
}
3.总结:
1)工厂模式主要是用来返回一个对象,把new对象的方法,封装到工厂类里面。
2)在工厂类当中返回由一个具体子类对象向上转型之后的父类对象,这个父类对象就可以由调用者直接使用。
3)使用工程模式的话可以实现当有多个子类且需要修改接口里面的某个方法时候,需要对多个子类进行修改,这样我们只要对工厂类的修改就可以,而不用一个个去修改子类,避免在某处子类遗漏修改。
- java 工厂模式小结
- 工厂模式 小结
- 简单工厂模式小结
- 小结-工厂设计模式
- JAVA设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
- JAVA学习小结(四)工厂模式区别
- 简单工厂模式小结整理
- 抽象工厂模式的小结
- java工厂模式-简单工厂,工厂方法,抽象工厂模式
- Java工厂模式之简单工厂模式
- java中的工厂模式(简单工厂模式+工厂方法模式)
- 工厂模式(工厂方法模式,抽象工厂模式) Java
- java的工厂模式
- java工厂模式
- java工厂模式
- java 设计工厂模式
- Java 工厂模式设计
- Java工厂模式
- sa-- df -h卡住
- 使用QT designer 设计界面用于FreeCAD中
- 程序员必须知道和动手实现的7种排序算法
- java 继承(is-a)
- 如何判断一个字符在一个字符串中出现的次数
- java 工厂模式小结
- cookie记住密码
- 运用debugfs调试方法
- vmlinux的构建过程
- VS的Tools工具(混淆/反编译/远程调试/Spy++等)
- insert into select和select into
- 黑马程序员--java集合中的数据结构
- Java 常用API的运用,效率及技巧
- 在64-bit机器上运行32-big的应用程序,需要安装ia32-libs库