设计模式 (二)工厂方法模式(FactoryMethod)
2012-04-16 10:41
489 查看
工厂方法模式原理图:
具体实现代码:
[java] view
plaincopy
package com.designpattern.factorymethod;
public interface FactoryMethod {
public Animal createAnimal();
}
[java] view
plaincopy
package com.designpattern.factorymethod;
public class DolphinFactory implements FactoryMethod {
@Override
public Animal createAnimal() {
return new Dolphin();
}
}
[java] view
plaincopy
package com.designpattern.factorymethod;
public class TigerFactory implements FactoryMethod {
@Override
public Animal createAnimal() {
return new Tiger();
}
}
[java] view
plaincopy
package com.designpattern.factorymethod;
public interface Animal {
public void eat();
}
[java] view
plaincopy
package com.designpattern.factorymethod;
public class Dolphin implements Animal {
@Override
public void eat() {
System.out.println("Dolphin is eating");
}
public void swim() {
System.out.println("Dolphin is swimming");
}
}
[java] view
plaincopy
package com.designpattern.factorymethod;
public class Tiger implements Animal {
@Override
public void eat() {
System.out.println("Tiger is eating");
}
public void run() {
System.out.println("Tiger is running");
}
}
[java] view
plaincopy
package com.designpattern.factorymethod;
public class Client {
public static void main(String[] args) {
FactoryMethod factory = new TigerFactory();
Animal tiger = factory.createAnimal();
tiger.eat();
factory = new DolphinFactory();
Animal dolphin = factory.createAnimal();
dolphin.eat();
}
}
在工厂方法模式中,客户端不在负责对象的创建,而是把这个责任交给了具体的工厂类,客户端只负责对象的调用,从而明确各个类的职责。
如果有新的产品加进来,只需要新增加一个具体的创建产品的工厂类和具体的产品类就可以了,不会影响但原来的其他的代码,代码量也不会变大,后期维护更加容易,增强了系统的可扩展性。
但是使用这个模式的时候而外地编写代码,增加了工作量。
具体实现代码:
[java] view
plaincopy
package com.designpattern.factorymethod;
public interface FactoryMethod {
public Animal createAnimal();
}
[java] view
plaincopy
package com.designpattern.factorymethod;
public class DolphinFactory implements FactoryMethod {
@Override
public Animal createAnimal() {
return new Dolphin();
}
}
[java] view
plaincopy
package com.designpattern.factorymethod;
public class TigerFactory implements FactoryMethod {
@Override
public Animal createAnimal() {
return new Tiger();
}
}
[java] view
plaincopy
package com.designpattern.factorymethod;
public interface Animal {
public void eat();
}
[java] view
plaincopy
package com.designpattern.factorymethod;
public class Dolphin implements Animal {
@Override
public void eat() {
System.out.println("Dolphin is eating");
}
public void swim() {
System.out.println("Dolphin is swimming");
}
}
[java] view
plaincopy
package com.designpattern.factorymethod;
public class Tiger implements Animal {
@Override
public void eat() {
System.out.println("Tiger is eating");
}
public void run() {
System.out.println("Tiger is running");
}
}
[java] view
plaincopy
package com.designpattern.factorymethod;
public class Client {
public static void main(String[] args) {
FactoryMethod factory = new TigerFactory();
Animal tiger = factory.createAnimal();
tiger.eat();
factory = new DolphinFactory();
Animal dolphin = factory.createAnimal();
dolphin.eat();
}
}
在工厂方法模式中,客户端不在负责对象的创建,而是把这个责任交给了具体的工厂类,客户端只负责对象的调用,从而明确各个类的职责。
如果有新的产品加进来,只需要新增加一个具体的创建产品的工厂类和具体的产品类就可以了,不会影响但原来的其他的代码,代码量也不会变大,后期维护更加容易,增强了系统的可扩展性。
但是使用这个模式的时候而外地编写代码,增加了工作量。
相关文章推荐
- 【Unity3D与23种设计模式】工厂方法模式(Factory Method)
- JAVA设计模式 —工厂方法模式(Factory Method)
- 【设计模式】Factory Method Pattern——工厂方法模式
- 设计模式之一---工厂方法模式【Factory Method模式】
- 面向对象设计模式纵横谈:Factory Method 工厂方法模式(笔记记录)
- 设计模式2:Factory Method Pattern(工厂方法模式)
- java设计模式1--工厂方法模式(Factory Method)
- 设计模式(2)の创建型の工厂方法模式(Factory Method)の多个工厂方法模式
- Java开发中的23种设计模式之一:工厂方法模式(Factory Method)
- 设计模式读书笔记之工厂方法模式(Factory method)
- 设计模式笔记之工厂模式--工厂方法模式(Factory Method)
- 设计模式之( Factory Method Pattern--工厂方法模式)
- JAVA设计模式(1) —<创建型>工厂方法模式(Factory Method)
- 设计模式之二 工厂方法模式 Factory Method
- 设计模式之一---工厂方法模式【Factory Method模式】
- 设计模式学习笔记二:工厂方法模式(Factory Method)
- 设计模式之五:工厂方法模式(Factory Method)
- 设计模式: 工厂方法模式(Factory Method)
- 设计模式 (二)工厂方法模式(FactoryMethod)
- 设计模式 (5)——工厂方法模式(Factory Method,创建型)