Java设计模式解析:工厂模式与工厂方法模式

需积分: 3 3 下载量 30 浏览量 更新于2024-08-18 收藏 350KB PPT 举报
"Java常用设计模式包括创建模式、结构模式和行为模式。这些模式的主要优点是实现了面向接口编程,降低了系统组件间的耦合性,并增加了系统的灵活性。在创建模式中,有工厂模式和工厂方法模式。 工厂模式是一种常用的创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建对象时,我们不会对客户端暴露创建逻辑,而是让工厂类来处理对象的创建。这样做的好处是,如果需要更换产品的实现,只需要改变工厂类,而不会影响到使用产品的客户端代码。工厂模式有两种实现:简单工厂模式和工厂方法模式。 简单工厂模式通常包含一个静态工厂方法,根据传入的参数来决定创建哪种类型的对象。例如: ```java public class Factory { public static Sample creator(int which) { if (which == 1) return new SampleA(); else if (which == 2) return new SampleB(); } } public class SampleA extends Sample {} public class SampleB extends Sample {} // 使用示例 Sample a = Factory.creator(1); // instanceof SampleA Sample b = Factory.creator(2); // instanceof SampleB ``` 在简单工厂模式中,如果需要添加新的产品类型,需要修改工厂类,这违反了开闭原则(对扩展开放,对修改关闭)。 为了改进这一点,可以采用工厂方法模式。在这个模式中,工厂职责被拆分,每个具体的产品都有对应的工厂类来创建。核心工厂类成为一个抽象工厂,只定义创建产品的接口,而不涉及具体的产品类: ```java public abstract class Factory { public abstract Sample createSample(); } public class SampleAFactory extends Factory { @Override public Sample createSample() { return new SampleA(); } } public class SampleBFactory extends Factory { @Override public Sample createSample() { return new SampleB(); } } // 使用示例 Factory factoryA = new SampleAFactory(); Sample a = factoryA.createSample(); // instanceof SampleA Factory factoryB = new SampleBFactory(); Sample b = factoryB.createSample(); // instanceof SampleB ``` 工厂方法模式允许我们在不修改原有系统的基础上,通过新增工厂类来支持新的产品,符合开闭原则,增强了系统的可扩展性。 结构模式则关注如何组织和组合类及对象,以达到复用和解耦的目的。而行为模式则关注对象之间的交互和责任分配。虽然这些内容在描述中没有具体展开,但它们同样是设计模式的重要组成部分,如代理模式、装饰器模式、桥接模式、适配器模式等,它们都提供了不同的解决方案来应对软件设计中的各种问题。 设计模式是经过长期实践验证的解决特定设计问题的通用模板,是软件开发中的宝贵经验总结。掌握和运用这些模式能够提高代码质量,使得系统更易于理解和维护。