接口interface的应用和工厂方法模式
来源:互联网 发布:南木梁知txt 编辑:程序博客网 时间:2024/06/06 17:12
工厂方法模式
有多个功能需要使用打印机的功能,在之后的时间有可能会添加新的打印机,为了避免大量的重复代码的大量修改,将重复代码写在一个函数中,方便修改
实例如下:
1、创建一个打印的接口
interface Printer{void open();void close();void print(String s);}
2、创建佳能打印机,并且事项接口printer
class CanonPrinter implements Printer{public void open(){System.out.println("CanonPrinter open");}public void print(String s){System.out.println("CanonPrinter print ---->" + s);}private void clean() //不允许外部类使用,所以使用private{System.out.println("CanonPrinter clean");}public void close(){this.clean();System.out.println("CanonPriter close");}}3、创建惠普打印机
class HPPrinter implements Printer{public void open(){System.out.println("HP open");}public void close(){System.out.println("HP close");}public void print(String s){System.out.println("HP print ---->" + s);}}
需要添加一种新的打印机
class XXXPrinter implements Printer{public void open(){System.out.println("XXXPrinter open");}public void print(String s){System.out.println("XXXPrinter print ---->" + s);}public void close(){System.out.println("XXXPrinter close");}}
4、修改程序,测试
class Test{public static void main(String args []){int a = 2;Printer printer = PrinterFactory.getPrinter(a); //工厂模式,只需要在工厂类中添加一小段代码即可printer.open();printer.print("abc");printer.close();}}
class PrinterFactory<span style="white-space:pre"></span>//工厂类{public static Printer getPrinter(int flag){Printer printer = null;if(flag == 0){printer = new HPPrinter();}else if(flag == 1){printer = new CanonPrinter();}else if(flag == 2) //新添加的打印机{printer = new XXXPrinter();}return printer;}}
普通模式
普通模式下,当添加一种类型的打印机时,需要每个功能都添加一句功能,修改的重复代码多,容易漏掉
class Test{public static void main(String args []){int flog = 2;Printer printer = null;<span style="white-space:pre"></span>if(flag == 0)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>printer = new HPPrinter();<span style="white-space:pre"></span>}<span style="white-space:pre"></span>else if(flag == 1)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>printer = new CanonPrinter();<span style="white-space:pre"></span>}<span style="white-space:pre"></span>else if(flag == 2)<span style="white-space:pre"></span>{<span style="white-space:pre"></span>printer = new XXXPrinter();<span style="white-space:pre"></span>}printer.open();printer.print("abc");printer.close();}}
0 0
- 接口interface的应用和工厂方法模式
- 设计模式-工厂方法设计模式与接口的应用
- 设计模式-工厂方法模式的概述和使用-接口
- 接口(Interface)的应用方法
- Interface+工厂方法设计模式
- 接口和简单静态工厂方法模式
- 接口的实际应用--工厂设计模式
- iOS应用设计模式开发中对简单工厂和工厂方法模式的运用
- 工厂方法模式应用
- 【重温设计模式】——从工厂方法模式看抽象类和接口的区别
- interface ---接口 的简单应用
- Java Interface接口的应用
- Interface 接口的命令模式
- JAVA接口的应用及工厂模式的简单示例
- 工厂模式 和工厂方法
- 抽象工厂模式和工厂方法模式的区别
- 工厂方法模式和抽象工厂模式的区别
- 工厂方法模式和抽象工厂模式的区别
- jsp页面引入spring Controller
- python 爬虫小记
- 《C++并发编程实战》读书笔记1---多线程基本使用
- poj Phone List 3630 (字典树 判断前缀)
- (一)如何成为wine开发者
- 接口interface的应用和工厂方法模式
- c++构造函数中发生错误,如何处理? http://www.opengpu.org/forum.php?mod=viewthread&tid=2918
- linux下的find文件查找命令与grep文件内容查找命令
- pkg文件--一种简单的游戏资源打包格式
- Android 基于ImageSwitcher实现的左右切换图片
- 通用异常处理框架
- 完整删除pod,解决某些无法解决的问题
- 用while循环计算1+1/2!+1/3!+1/4!...+1/20!(BigDecimal精确计算小数)
- Android——处理设备旋转Activity销毁时临时数据丢失的问题