设计模式——工厂方法
2016-07-01 15:08
316 查看
关键词:工厂方法在简单工厂的基础上,把负责生产对象的工厂类抽象成一个抽象类,这样我们要扩展工厂类的时候,就只要增加,不须要修改工厂类。
工厂方法模式概述:工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由实现抽象工厂的具体工厂类实现。
优点:客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性。
缺点:需要额外的编写代码,增加了工作量。
抽象的工厂接口
具体的工厂方法(实现了抽象工厂接口):
抽象的类(和简单工厂模式一样)
具体的类(和简单工厂模式)
测试代码:
说明:如果我们想创建新类型的对象,就增加新类型的工厂和新类型就可以了。
工厂方法模式概述:工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由实现抽象工厂的具体工厂类实现。
优点:客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性。
缺点:需要额外的编写代码,增加了工作量。
抽象的工厂接口
public interface Factory { public abstract Animal createAnimal(); }
具体的工厂方法(实现了抽象工厂接口):
public class DogFactory implements Factory { @Override public Animal createAnimal() { return new Dog(); } }
public class CatFactory implements Factory { @Override public Animal createAnimal() { return new Cat(); } }
抽象的类(和简单工厂模式一样)
public abstract class Animal { public abstract void eat(); }
具体的类(和简单工厂模式)
public class Cat extends Animal { @Override public void eat() { System.out.println("猫吃鱼"); } }
public class Dog extends Animal { @Override public void eat() { System.out.println("狗狗吃肉"); } }
测试代码:
public class AnimalDemo { public static void main(String[] args) { // 声明使用的是抽象接口,所以才会灵活 Factory factory = new DogFactory(); // 声明使用的是抽象类,所以才会灵活 Animal animal = factory.createAnimal(); animal.eat(); } }
说明:如果我们想创建新类型的对象,就增加新类型的工厂和新类型就可以了。
相关文章推荐
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- Ruby设计模式编程之适配器模式实战攻略
- 实例讲解Ruby使用设计模式中的装饰器模式的方法
- 设计模式中的模板方法模式在Ruby中的应用实例两则
- Ruby设计模式编程中对外观模式的应用实例分析
- 实例解析Ruby设计模式编程中Strategy策略模式的使用
- Ruby中使用设计模式中的简单工厂模式和工厂方法模式
- Ruby使用设计模式中的代理模式与装饰模式的代码实例
- 详解组合模式的结构及其在Ruby设计模式编程中的运用
- C# 设计模式系列教程-建造者模式
- C#编程中使用设计模式中的原型模式的实例讲解
- 使用设计模式中的工厂方法模式进行C#编程的示例讲解
- 实例解析C#设计模式编程中简单工厂模式的使用
- 详解C#设计模式编程中生成器模式的使用