浅谈设计模式——简单工厂模式
来源:互联网 发布:我的世界手机版js天堂 编辑:程序博客网 时间:2024/05/13 04:26
简介:简单工厂模式又叫静态工厂方法模式,它定义一个具体的工厂类来负责创建一些类的实例,而这些被创建的类有一个共同的父类,这样就可以实现面向抽象而不是面向具体编程。
组成:工厂类、抽象类和实现抽象类的具体类。
下面我们以创建动物园的动物为类实现一个简单工厂模式。
首先,我们创建一个动物的公共接口
package my.pattern.simplefactory;
//创建动物类的接口
public interface Animal {
//创建公共方法
public void eat();
}
然后依次实现老虎、海豚和鹦鹉的具体类
package my.pattern.simplefactory;
//创建老虎类,实现animal借口方法
public class Tiger implements Animal {
//实现公共方法
public void eat() {
System.out.println("老虎会吃");
}
//子类特有方法
public void run(){
System.out.println("老虎会跑");
}
}
package my.pattern.simplefactory;
//创建海豚类,实现Animal的方法
public class Dolphin implements Animal{
//实现公共方法
public void eat (){
System.out.println("海豚会吃");
}
//私有方法
public void swim(){
System.out.println("海豚会游泳");
}
}
package my.pattern.simplefactory;
//创建鹦鹉类,实现Animal的方法
public class Parrot implements Animal{
//实现公共方法
public void eat(){
System.out.println("鹦鹉会吃");
}
//实现私有方法
public void fly(){
System.out.println("鹦鹉会飞");
}
}
然后,创建工厂类。
package my.pattern.simplefactory;
//创建工厂类
public class AnimalFactory {
public static Animal Factory(String animal){
if("Tiger".equals(animal)){
return new Tiger();
}
else if("Dolphin".equals(animal)){
return new Dolphin();
}
else if("Parrot".equals(animal)){
return new Parrot();
}
return null;
}
}
最后,在客户端实现。
package my.pattern.simplefactory;
public class Client {
//实现方法
public static void main(String[] args) {
Animal animal = AnimalFactory.Factory("Tiger");
animal.eat();
animal = AnimalFactory.Factory("Dolphin");
animal.eat();
animal = AnimalFactory.Factory("Parrot");
animal.eat();
}
}
这样我们就实现了简单工厂模式。
优点:在简单工厂模式中,客户端不再负责对象的创建,而是把这个责任丢给具体的工厂类,客户端只负责对对象的调用,从而明确了各个类的职责。
缺点:由于简单工厂模式使用静态方法来创建对象,这就导致静态方法无法被继承。另一方面,这个工厂类负责所有对象的创建,这会导致虽然具体产品的不断增多,可能客户端对于某些产品的创建方式会有不同的要求,这样的话,就要不断的修改工厂类,增加相应的判断逻辑,不利于后期维护。
深入探讨:对于工厂类我们可以使用JAVA的反射机制进行优化。如下:
public static Animal factory(String animal) throws ClassNotFoundException, InstantiationException, IllegalAccessException{
Class ani = Class.forName(animal);
return (Animal)ani.newInstance();
}
- 浅谈设计模式——简单工厂模式
- 浅谈设计模式之简单工厂模式
- 浅谈设计模式之一——简单工厂、工厂、抽象工厂
- 设计模式——简单工厂模式
- 设计模式——简单工厂模式
- 设计模式——简单工厂模式
- 设计模式——简单工厂模式
- 设计模式——简单工厂模式
- 【设计模式】——简单工厂模式
- 设计模式——简单工厂模式
- 设计模式——简单工厂模式
- 设计模式——简单工厂模式
- 设计模式——简单工厂模式
- 设计模式——简单工厂模式
- 设计模式——简单工厂模式
- 设计模式——简单工厂模式
- 设计模式——简单工厂模式
- 设计模式——简单工厂模式
- 循环节(hdoj1005)
- Android面试选择题
- 程序员薪资,如何分配,如何增长???
- MFC中 新建类与基本类 基本类内成员变量、函数调用
- Android面试填空题
- 浅谈设计模式——简单工厂模式
- c语言清屏函数
- 今年第一个项目来说NET的中间语言
- Android面试问答题
- Android 开发环境安装手册下载
- EJB 定时服务实现
- C#将图片转换二进制保存至Xml
- 我不是天生的C++,也并非天生就喜欢电脑
- rsyslog 开启本地日志服务