本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020
工厂模式是最常用的模式,因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a = new A(),工厂模式也是用来创建用来创建实例对象的,所以以后new时要多个心眼,是否可以考虑使用工厂模式。
简单工厂模式又可以分成三种模式:
1) 普通简单工厂模式
2) 多方法简单工厂模式
3) 多静态方法简单工厂模式
普通简单工厂模式:
举例:(简单的四则运算)
1. 创建四则运算的共同接口:
//操作类接口
public interface Operator{
public double Operate(double d,double e);
}
2. 创建加减乘除实现类:
//加法类
public class AddOperator implements Operator{
@Override
public double Operate(double a, double b) {
// TODO Auto-generated method stub
return a + b;
}
}
public class SubOperator implements Operator {
@Override
public double Operate(double a, double b) {
// TODO Auto-generated method stub
return a - b;
}
}
public class MulOperator implements Operator {
@Override
public double Operate(double a, double b) {
// TODO Auto-generated method stub
return a * b ;
}
}
public class DivOperator implements Operator {
@Override
public double Operate(double a, double b) {
try {
if(b == 0)
throw new Exception("除数不能为0!");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return a / b;
}
}
3. 创建工厂类:
public class OperatorFactory {
public Operator createOperator(String operate){
Operator oper = null;
switch(operate){
case "+" :
oper = new AddOperator();
break;
case "-" :
oper = new SubOperator();
break;
case "*" :
oper = new MulOperator();
break;
case "/" :
oper = new DivOperator();
break;
}
return oper;
}
}
4. 最后就是测试类了:
public class FactoryTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
OperatorFactory factory = new OperatorFactory();
Operator oper = factory.createOperator("*");
double result = oper.Operate(3.6,4.8);
System.out.println(result);
}
}
多方法简单工厂模式:
在上述普通简单工厂模式中,设想这样一种状况,如果传递进来的参数是空,或者是别的不合法字符,则不能正确的创建对象,而多方法简单工厂模式则提供多个工厂方法,分别创建对象。
和普通的不同之处仅在工厂类,改动如下:
public class OperatorFactory {
public Operator createAddOperator(){
return new AddOperator();
}
public Operator createSubOperator(){
return new SubOperator();
}
public Operator createMulOperator(){
return new MulOperator();
}
public Operator createDivOperator(){
return new DivOperator();
}
}
这样,在测试时,就不需要传递相应的参数,只需要调用需要的工厂方法,即可:
public class FactoryTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
OperatorFactory factory = new OperatorFactory();
/*Operator oper = factory.createOperator("*");*/
Operator oper = factory.createMulOperator();
double result = oper.Operate(3.6,4.8);
System.out.println(result);
}
}
多静态方法简单工厂模式:
所谓的静态方法,即将上面工厂类中的工厂方法置为静态的,不需要创建实例,直接调用即可。
public class OperatorFactory {
public static Operator createAddOperator(){
return new AddOperator();
}
public static Operator createSubOperator(){
return new SubOperator();
}
public static Operator createMulOperator(){
return new MulOperator();
}
public static Operator createDivOperator(){
return new DivOperator();
}
}
如上,将工厂方法设为静态的,则在测试时,直接调用即可。
public class FactoryTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//OperatorFactory factory = new OperatorFactory();
/*Operator oper = factory.createOperator("*");*/
Operator oper = OperatorFactory.createMulOperator();
double result = oper.Operate(3.6,4.8);
System.out.println(result);
}
}
总体来说,工厂模式适合:凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选用第三种——静态工厂方法模式。
分享到:
相关推荐
java设计模式-创建者模式-简单工厂模式。详细的讲解了什么是抽象工厂模式及应用场景和应用场景的代码事例。及各工厂模式的区别。
java设计模式-创建者模式-简单工厂模式。详细的讲解了什么是简单工长模式及应用场景和应用场景的代码事例。
JAVA-设计模式-创建型模式-工厂模式
java设计模式-创建者模式-简单工厂模式。详细的讲解了什么是工厂方法模式及应用场景和应用场景的代码事例。及各工厂模式的区别。
java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...
JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
JAVA设计模式-day2,请的行业大能讲得课程,涉及:创建模式(5种: 1、 工厂方法模式(Factory Method); 2、 抽象工厂模式; 3、 单例模式(Singleton) • 4、 建造者模式(Builder); 5、 原型模式(Prototype...
这个简单工厂的示例中,用工厂类来创建实际的运算操作!易于功能的扩展……
1.1 创建型模式 4 1.1.1 工厂方法 4 1.1.2 抽象工厂 6 1.1.3 建造者模式 10 1.1.4 单态模式 13 1.1.5 原型模式 15 1.2 结构型模式 17 1.2.1 适配器模式 17 1.2.2 桥接模式 19 1.2.3 组合模式 23 1.2.4 装饰模式 26 ...
java设计模式之抽象工厂模式,实例----手机工厂,一个简单的例子,有助于理解抽象工厂模式。
这是一篇关于设计模式的PDF,其内容涵盖了面向对象编程,设计原则,以及创建型模式、结构型模式、和行为型模式等。该文件共有3页,包含了设计模式的分类和具体的模式实现。 什么是设计模式? 有哪些类型的设计模式...
1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:模板方法模式、命令模式、...
创建者模式中的工厂模式
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂...
目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式
java设计模式示例 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型...
抽象工厂模式 JAVA设计模式
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 工厂模式(Factory Pattern) 抽象工厂模式...
工厂模式主要是为创建对象提供了接口。工厂模式按照《Java 与模式》中的提法分为三类: 1. 简单工厂模式(Simple Factory) 2. 工厂方法模式(Factory Method) 3. 抽象工厂模式(Abstract Factory) 这三种模式从上到...
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...