创建型设计模式-简单工厂模式
2017-03-02 16:20
316 查看
简单工厂模式:静态工厂方法模式
由一个工厂对象决定创建那一种产品类的实例,根据自变量的不同返回不同的产品类
解决问题:解决多重简单对象重复创建的问题,但是不能解决新建产品类型的问题(开闭原则),添加新产品的问题可以在简单工厂模式再次进行抽象化处理,使用抽象工厂设计模式。
简单工厂模式参与角色:
工厂类角色:含有应用紧密相关的商业逻辑,工厂类在客户端的直接调用下创建产品对象,往由一个具体类实现
抽象产品角色:抽象产品由一个接口或者抽象类实现
具体产品:实现抽象产品接口
工厂类角色:AnimalFactory
抽象产品角色:Animal
具体产品角色:
测试代码:
结果:
缺陷:如果需要对产品扩展就需要重新更改工厂的代码,不符合开闭的原则
开闭原则:对修改关闭,对扩展开放
由一个工厂对象决定创建那一种产品类的实例,根据自变量的不同返回不同的产品类
解决问题:解决多重简单对象重复创建的问题,但是不能解决新建产品类型的问题(开闭原则),添加新产品的问题可以在简单工厂模式再次进行抽象化处理,使用抽象工厂设计模式。
简单工厂模式参与角色:
工厂类角色:含有应用紧密相关的商业逻辑,工厂类在客户端的直接调用下创建产品对象,往由一个具体类实现
抽象产品角色:抽象产品由一个接口或者抽象类实现
具体产品:实现抽象产品接口
工厂类角色:AnimalFactory
public abstract class AnimalFactory { public static Animal createAnimal(String animalType){ if("pig".equals(animalType)){ return new Pig(); }else if("dog".equals(animalType)){ return new Dog(); }else{ return null; } } }
抽象产品角色:Animal
public abstract class Animal { public abstract void eat(); }
具体产品角色:
public class Dog extends Animal{ @Override public void eat() { System.out.println("Dog is eating........"); } }
public class Pig extends Animal{ @Override public void eat() { System.out.println("Pig is eating........"); } }
测试代码:
Animal animal = AnimalFactory.createAnimal("dog"); animal.eat(); animal = AnimalFactory.createAnimal("pig"); animal.eat();
结果:
缺陷:如果需要对产品扩展就需要重新更改工厂的代码,不符合开闭的原则
开闭原则:对修改关闭,对扩展开放
相关文章推荐
- 《Android之大话设计模式》--设计模式 创建型模式 第一章:简单工厂模式
- 《Android之大话设计模式》--设计模式 创建型模式 第一章:简单工厂模式
- 设计模式(一)简单工厂(创建型)(Java&&PHP)
- 设计模式之简单工厂(创建型模式)
- 设计模式(2)-创建型-简单工厂,工厂,抽象工厂模式(Factory)
- 设计模式——创建型设计模式总结(简单工厂、普通工厂、抽象工厂、建造者、原型和单例)
- 创建型设计模式:简单工厂模式--分析优缺点
- Java技术_每天掌握一种设计模式(003)_使用场景及简单实例(创建型:工厂方法)
- 设计模式(2)-创建型-简单工厂,工厂,抽象工厂模式(Factory)
- 【转】设计模式——创建型设计模式总结(简单工厂、普通工厂、抽象工厂、建造者、原型和单例)
- 设计模式学习札记(一):创建型模式之简单工厂模式
- 【设计模式基础】创建型模式 - 3 - 简单工厂(Simple Factory)
- 【创建型设计模式】-简单工厂方法设计模式
- 设计模式1:简单工厂模式【创建型】
- 《Android之大话设计模式》--设计模式 创建型模式 第一章:简单工厂模式
- 设计模式-创建型01-简单工厂
- 一、设计模式之工厂模式--简单工厂模式--创建型模式
- 设计模式(2)-创建型-简单工厂,工厂,抽象工厂模式(Factory)
- 设计模式(2)-创建型-简单工厂,工厂,抽象工厂模式(Factory)
- Java技术_每天掌握一种设计模式(004)_使用场景及简单实例(创建型:抽象工厂)