工厂模式
工厂模式就是专门负责将大量有共同接口的类实例化,而且不必事先知道每次是要实例化哪一个类的模式。它定义一个用于创建对象的接口,由子类决定实例化哪一个类。
java 例子如下:
package com.lyis.patterns.factory;
/**
* 水果接口
*/
public interface Fruit {
/**
* 获取水果名称
*
* @return
*/
public String getFruitName();
/**
* 获取水果描述
*
* @return
*/
public String getDescription();
}
package com.lyis.patterns.factory;
/**
* 苹果(具体水果)
*/
public class Apple implements Fruit {
public String getFruitName() {
return "Apple";
}
public String getDescription() {
return "Tastes great!";
}
}
package com.lyis.patterns.factory;
/**
* 葡萄(具体水果)
*/
public class Grape implements Fruit {
public String getFruitName() {
return "Grape";
}
public String getDescription() {
return "Very sweet!";
}
}
package com.lyis.patterns.factory;
/**
* 水果工厂
*/
public class FruitFactory {
public static Fruit getFruit(String name) {
if ("apple".equals(name)) {
return new Apple();
}
if ("grape".equals(name)) {
return new Grape();
}
return null;
}
}
package com.lyis.patterns.factory;
/**
* 工厂模式测试
*/
public class Test {
/**
* 输出水果信息
*
* @param fruit
* 水果对象
*/
public void display(Fruit fruit) {
if (fruit == null) {
return;
}
System.out.println("Name: " + fruit.getFruitName());
System.out.println("Desc: " + fruit.getDescription());
}
public static void main(String[] args) {
Test test = new Test();
// 获取苹果对象
Fruit fruit = FruitFactory.getFruit("apple");
test.display(fruit);
// 获取葡萄对象
fruit = FruitFactory.getFruit("grape");
test.display(fruit);
}
}