工厂方法模式
来源:互联网 发布:linux jdk环境变量 编辑:程序博客网 时间:2024/06/05 20:18
工厂方法模式(Factory Method):定义一个创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到子类。
Operation.java
public interface Operation { public double getResult(double number1,double number2) throws Exception;}class OperationAdd implements Operation{ @Override public double getResult(double number1, double number2) { double result=0; return result=number1+number2; }}class OperationSub implements Operation{ @Override public double getResult(double number1, double number2) { double result=0; return result=number1-number2; }}class OperationMul implements Operation{ @Override public double getResult(double number1, double number2) { double result=0; return result=number1*number2; }}class OperationDiv implements Operation{ @Override public double getResult(double number1, double number2) throws Exception { double result=0; if(number2==0){ throw new Exception("除数不能为0"); } result=number1/number2; return result; }}
先构造一个工厂接口,然后加减乘除各自建造一个具体工厂去实现这个接口
public interface IFactory { Operation createOperation();}class AddFactory implements IFactory{ @Override public Operation createOperation() { return new OperationAdd(); }}class SubFactory implements IFactory{ @Override public Operation createOperation() { return new OperationSub(); }}class MulFactory implements IFactory{ @Override public Operation createOperation() { return new OperationMul(); }}class DivFactory implements IFactory{ @Override public Operation createOperation() { return new OperationDiv(); }}
Test.java
package zx.factorymethod.test1;public class Test { public static void main(String[] args) throws Exception { AddFactory addFactory = new AddFactory(); Operation operationAdd = addFactory.createOperation(); System.out.println(operationAdd.getResult(1, 1)); }}
工厂方法模式实现时,客户端需要决定实例化哪个工厂来实现运算类。也就是说,工厂方法模式把简单工厂的内部逻辑判断移到客户端代码来进行。如果想要加功能,本来是改工厂,现在是修改客户端。
具体实例(雷锋/志愿者工厂)
简单工厂
简单工厂:根据传入的参数返回特定的对象。
public class LeiFeng { public void Sweep(){ System.out.println("扫地"); } public void Wash(){ System.out.println("洗衣"); } public void BuyRice(){ System.out.println("买米"); }}class UnderGraduate extends LeiFeng{}class Volunteer extends LeiFeng{}
工厂方法
工厂方法:根据创建的工厂类型,返回特定的对象
雷锋工厂
IFactory.java
public interface IFactory { LeiFeng createLeiFeng();}class UnderGraduateFactory implements IFactory{ @Override public LeiFeng createLeiFeng() { return new UnderGraduate(); }}class VolunteerFactory implements IFactory{ @Override public LeiFeng createLeiFeng() { return new Volunteer(); }}
IFactory为工厂接口,UnderGraduateFactory和VolunteerFactory为实现这个接口的具体工厂的实现。
工厂方法模式的调用
Test.java
public class Test { public static void main(String[] args) { IFactory underGraduateFactory = new UnderGraduateFactory(); LeiFeng leiFeng = underGraduateFactory.createLeiFeng(); leiFeng.Sweep(); leiFeng.BuyRice(); leiFeng.Wash(); }}
工厂方法模式的使用场合
- 客户端不知道它要创建的具体是哪一个子类。
- 一个类想要由自己的子类来定义某对象的创建过程。
- 类将创建某对象的职责代理给一些帮助子类中的一个,并且你想要将哪-一个子类作为代理的信息进行局部化。
源码:https://github.com/zxiang179/DesignPattern
0 0
- 工厂模式 -- 工厂方法
- 工厂模式-工厂方法
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式---工厂方法模式
- 【模式】工厂方法模式
- 工厂方法,抽象工厂模式
- C#工厂模式-工厂方法
- 工厂模式 和工厂方法
- 工厂模式-C-工厂方法
- 工厂模式以及工厂方法
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂方法、抽象工厂模式
- 工厂模式(简单工厂、工厂方法)
- 简单工厂|工厂方法|抽象工厂模式
- 设计模式-工厂模式(简单工厂模式+工厂方法模式)
- form 表单提交前验证
- Java之反射机制
- Eclipse 插件开发之 树形视图展示要点
- iOS-常见编程规范汇总
- servlet的一个小项目(一)
- 工厂方法模式
- 获得目标进程PEB,并获得进程各种信息
- hdu 5769后缀数组 求含有某个字母的某个字符串的不同子串的个数
- Fiddler教程(Web调试工具)
- HDU 1213 并查集
- Mac和Linux系统的:Arp欺骗源码
- ubuntu 关机,重启,注销命令
- 文章标题
- android 工具类 集合