您的位置:首页 > 编程语言 > Java开发

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();
}

}运行结果:
狗啃骨头。。。

猫吃鱼。。。

总结:

工厂方法模式概述
工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现。
优点
客户端不需要在负责对象的创建,从而明确了各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性
缺点
需要额外的编写代码,增加了工作量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: