java与设计模式(四)-工厂方法模式
2018-02-21 22:19
393 查看
1:抽象动物类:package com.itheima.o_factoryTemp.b_abstractfactory;
/**
* 抽象动物类
*
* @ClassName: Animal
* @Description: TODO(这里用一句话描述这个类的作用)
* @author gyoomi
* @date 2018年2月21日
*
*/
public abstract class Animal {
public abstract void eat();
}
2:狗类package com.itheima.o_factoryTemp.b_abstractfactory;
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗啃骨头。。。");
}
}
3:猫类package com.itheima.o_factoryTemp.b_abstractfactory;
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼。。。");
}
}
4:抽象工厂类:package com.itheima.o_factoryTemp.b_abstractfactory;
/**
* 抽象工厂类
* @ClassName: Factory
* @Description: TODO(这里用一句话描述这个类的作用)
* @author gyoomi
* @date 2018年2月21日
*
*/
public abstract class Factory {
public abstract Animal createAnimal();
}
5:狗类工厂package com.itheima.o_factoryTemp.b_abstractfactory;
public class DogFactory extends Factory {
@Override
public Animal createAnimal() {
return new Dog();
}
}
6:猫类工厂:package com.itheima.o_factoryTemp.b_abstractfactory;
/**
* 具体工厂
*
* @ClassName: CatFactory
* @Description: TODO(这里用一句话描述这个类的作用)
* @author gyoomi
* @date 2018年2月21日
*
*/
public class CatFactory extends Factory {
@Override
public Animal createAnimal() {
return new Cat();
}
}7:测试类
package com.itheima.o_factoryTemp.b_abstractfactory;
/**
* 测试类
*
* @ClassName: App
* @Description: TODO(这里用一句话描述这个类的作用)
* @author gyoomi
* @date 2018年2月21日
*
*/
public class App {
public static void main(String[] args) {
Dog dog = (Dog) new DogFactory().createAnimal();
Cat cat = (Cat) new CatFactory().createAnimal();
dog.eat();
cat.eat();
}
}运行结果:
狗啃骨头。。。
猫吃鱼。。。
总结:
工厂方法模式概述
工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现。
优点
客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性
缺点
需要额外的编写代码,增加了工作量
/**
* 抽象动物类
*
* @ClassName: Animal
* @Description: TODO(这里用一句话描述这个类的作用)
* @author gyoomi
* @date 2018年2月21日
*
*/
public abstract class Animal {
public abstract void eat();
}
2:狗类package com.itheima.o_factoryTemp.b_abstractfactory;
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗啃骨头。。。");
}
}
3:猫类package com.itheima.o_factoryTemp.b_abstractfactory;
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼。。。");
}
}
4:抽象工厂类:package com.itheima.o_factoryTemp.b_abstractfactory;
/**
* 抽象工厂类
* @ClassName: Factory
* @Description: TODO(这里用一句话描述这个类的作用)
* @author gyoomi
* @date 2018年2月21日
*
*/
public abstract class Factory {
public abstract Animal createAnimal();
}
5:狗类工厂package com.itheima.o_factoryTemp.b_abstractfactory;
public class DogFactory extends Factory {
@Override
public Animal createAnimal() {
return new Dog();
}
}
6:猫类工厂:package com.itheima.o_factoryTemp.b_abstractfactory;
/**
* 具体工厂
*
* @ClassName: CatFactory
* @Description: TODO(这里用一句话描述这个类的作用)
* @author gyoomi
* @date 2018年2月21日
*
*/
public class CatFactory extends Factory {
@Override
public Animal createAnimal() {
return new Cat();
}
}7:测试类
package com.itheima.o_factoryTemp.b_abstractfactory;
/**
* 测试类
*
* @ClassName: App
* @Description: TODO(这里用一句话描述这个类的作用)
* @author gyoomi
* @date 2018年2月21日
*
*/
public class App {
public static void main(String[] args) {
Dog dog = (Dog) new DogFactory().createAnimal();
Cat cat = (Cat) new CatFactory().createAnimal();
dog.eat();
cat.eat();
}
}运行结果:
狗啃骨头。。。
猫吃鱼。。。
总结:
工厂方法模式概述
工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现。
优点
客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性
缺点
需要额外的编写代码,增加了工作量
相关文章推荐
- JAVA设计模式:简单静态工厂方法模式
- java设计模式之工厂方法模式
- java23种设计模式-----简单工厂模式、工厂方法模式、抽象工厂模式的区别
- JAVA设计模式 - 工厂方法模式
- Java学习笔记---设计模式工厂方法模式
- JAVA设计模式学习5——工厂方法模式
- java设计模式---工厂方法模式
- java设计模式学习(一)-工厂方法模式3(最通俗易懂)
- Java设计模式之工厂方法模式(转) 实现是抽象工厂?
- Java设计模式(2)创建型:工厂模式(工厂方法模式与抽象工厂模式)
- java设计模式之工厂方法模式
- Java经典设计模式-创建型模式-工厂方法模式(Factory Method)
- Java设计模式百例 - 工厂方法模式
- 常用Java设计模式系列(5)- 简单工厂、工厂方法模式和抽象工厂模式
- Java设计模式《五》工厂方法模式
- 工厂方法模式(java 设计模式)
- Java设计模式:工厂方法模式
- java设计模式之工厂方法模式
- Java设计模式之工厂模式(简单工厂模式和工厂方法模式)
- java之设计模式---工厂方法模式