Java工厂模式:多层次的产品结构设计

需积分: 0 10 下载量 162 浏览量 更新于2024-08-18 收藏 639KB PPT 举报
多层次的产品结构-工厂模式java 工厂模式是指在软件开发中,专门负责将大量有共同接口的类实例化的一种设计模式。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。 工厂模式的几种形态: 1. 简单工厂(SimpleFactory)模式,又称静态工厂方法模式(StaticFactoryMethod Pattern)。这种模式提供了一个静态方法来实例化对象,客户端可以通过调用该方法来获取对象实例。 2. 工厂方法(FactoryMethod)模式,又称多态性工厂(PolymorphicFactory)模式或虚拟构造子(VirtualConstructor)模式。这种模式提供了一个抽象工厂接口,客户端可以通过实现该接口来获取对象实例。 3. 抽象工厂(AbstractFactory)模式,又称工具箱(Kit或Toolkit)模式。这种模式提供了一个抽象工厂接口,客户端可以通过实现该接口来获取一组相关的对象实例。 简单工厂实例: 例如,一个农场公司,专门向市场销售各类水果。在这个系统里需要描述以下的水果:葡萄、草莓、苹果等。水果与其他的植物有很大的不同,就是水果最终是可以采摘食用的。那么一个自然的作法就是建立一个各种水果都适用的接口,以便与农场里的其他植物区分开。 代码清单1:接口Fruit的源代码 ```java public interface Fruit { /** * 生长 */ void grow(); /** * 收获 */ void harvest(); /** * 种植 */ void plant(); } ``` 代码清单2:类Apple的源代码 ```java public class Apple implements Fruit { private int treeAge; public void grow() { log("Apple is growing"); } public void harvest() { log("Apple has been harvested."); } public void plant() { log("Apple has been planted."); } public static void log(String msg) { System.out.println(msg); } public int getTreeAge() { return treeAge; } public void setTreeAge(int treeAge) { this.treeAge = treeAge; } } ``` 代码清单3:类Grape的源代码(省略) 在上面的代码中,我们定义了一个Fruit接口,提供了grow、harvest和plant三个方法。然后,我们定义了Apple和Grape两个类,实现了Fruit接口。这样,我们可以通过Fruit接口来获取Apple和Grape对象实例,从而实现了多态性。 在工厂模式中,我们可以使用简单工厂、工厂方法和抽象工厂三种模式来实例化对象。简单工厂模式提供了一个静态方法来实例化对象,工厂方法模式提供了一个抽象工厂接口来实例化对象,抽象工厂模式提供了一个抽象工厂接口来实例化一组相关的对象。 工厂模式的优点是可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。这使得我们的代码更加灵活和可维护。同时,工厂模式也可以降低耦合度,提高代码的可读性和可维护性。 工厂模式是软件开发中的一种常用设计模式,提供了一个灵活和可维护的方式来实例化对象。