Java与设计模式(02)--工厂方法模式
来源:互联网 发布:美即和一叶子知乎 编辑:程序博客网 时间:2024/05/23 21:20
我们接着之前的简单工厂模式继续。
之前讨论过,如果不在使用中通过传入类名参数传入对象,我们在每新增一个类时,都需要修改一次produce()方法,所以我们说简单工厂方法的灵活性是不够的,不符合“开放——封闭”原则。
我们考虑一下,将工厂定义为接口,将创建工作放置到子类中,这样代码变为:
我们的实体类:
Car
public interface Car {public void go();}
Bus
public class Bus implements Car {@Overridepublic void go() {System.out.println("Bus is going...");}}
Truck
public class Truck implements Car {@Overridepublic void go() {System.out.println("Truck is going...");}}我们的工厂类:
CarFactory被定义为接口:
public interface CarFactory {public Car produce();}
两个工厂实现:
public class BusFactory implements CarFactory {@Overridepublic Car produce() {return new Bus();}}
public class TruckFactory implements CarFactory {@Overridepublic Car produce() {return new Truck();}}
测试类:
public class Test {public static void main(String[] args) {CarFactory factory = new BusFactory();Car car = factory.produce();car.go();}}
这种模式有一个好处就是:
如果我们创建一个新的Sedan类,为了能够创建Sedan对象:
public class Sedan implements Car {@Overridepublic void go() {System.out.println("Sedan is going...");}}
public class SedanFactory implements CarFactory {@Overridepublic Car produce() {return new Sedan();}}
我们能够看出来,工厂方法模式的好处是我们在添加新的类的时候,不需要像简单工厂模式的那样修改factory类,而是实现factory接口即可。也就是说我们在不修改现有代码的情况下扩展了我们模块的功能,这样我们能够在灵活性和健壮性上达到一个很好的平衡。
- Java与设计模式(02)--工厂方法模式
- java设计模式--工厂方法设计模式
- Java工厂方法模式设计
- Java工厂方法模式设计
- java工厂方法设计模式
- java设计模式-工厂方法
- JAVA-工厂方法设计模式
- 【java】工厂方法设计模式
- 设计模式之工厂方法模式与抽象工厂模式
- 设计模式之工厂方法模式与抽象工厂模式
- 设计模式<四>简单工厂模式与工厂方法模式
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- java设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- 一个游戏程序员的学习资料
- Vim文本编辑器--简单操作方法
- virsh kvm xen xm qemu libvirt virt-manager概述 .
- 有关于回调函数(callback)
- linux下javaEE环境搭建(java6 mysql5 tomcat6 myeclipse8.0 安装过程及常见问题)
- Java与设计模式(02)--工厂方法模式
- C++ map 使用
- SQl,PL/SQL和SQL*Plus之间的区别
- FreeBSD 安装vim 编辑器
- VXIpnp基于HP-VISA库的VXI总线测试应用编程
- linux i18n修改,中文版英文版体现
- multimap 使用方法
- [LeetCode] Gray Code
- WinCE 字体平滑 ClearType