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

Java设计模式:工厂模式(一)简单工厂模式

2011-11-03 13:46 585 查看
最近在看Java设计模式,刚刚看了一个工厂模式,又与自己现在的使用的框架做了个比对,发现工厂模式特别是工厂方法和抽象工厂对于“开放封闭”原则支持的不错;

言归正传,说下我自己的感受与想法;

首先,要理解工厂模式的精髓,我认为要首先理解“开放封闭”原则;简单介绍一下,开放封闭原则(OCP,Open Closed Principle)是所有面向对象原则的核心。软件设计本身所追求的目标就是封装变化、降低耦合,而开放封闭原则正是对这一目标的最直接体现。

开放封闭原则主要体现在两个方面:

   对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。

   对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。(以上内容转自百度)

其次,工厂模式其实就是对于对象新增new方法的扩展,一个对象的实例化如果用new实现的话,一般都是可以改成工厂模式的,但是改成工厂模式的话对于代码量肯定是有所增加的,但是他的优点会在后续开发中显现,如果使用工厂模式对于代码的可扩展性和系统增加新功能都有很大的好处;

下面,逐一介绍一下工厂模式,工厂模式可以分为三类:简单工厂模式,工厂方法模式,抽象工厂模式;(本篇只介绍简单工厂模式)

简单工厂模式:简单工厂模式又叫静态工厂模式,顾名思义,它是用来实例化目标类的静态类。简单工厂模式主要有Product,ConcreteProduct,Creator,Client这几个参与者构成,下面举一个简单的例子:

Code:

Product

//将我们需要得到的对象通过一个接口来进行表示

public interface Person{
live();
}


ConcreteProduct:

//我们具体要实现的产品通过两个实现类来完成

public class BlackPerson implements Person{
live(){
System.out.println("Black person is living!");
}
}

public class WhitePerson implements Person{
live(){
System.out.println("White person is living!");
}
}

Creator://初始化对象的工厂

public class God{
static  Person  createPerson(personType){
switch(personType){
case '0': return new BlackPerson();
case '1': return new WhitePerson();
defalut: return null;		}
}
}

Client:

//具体使用的客户

public class Client {
private Person man1;
private Person man2;
public void test() {
this.man1=God.createPerson(0);
this.man2=God.createPerson(1);

man1.live();
man2.live();
}
}


总结:可以看出,简单工厂模式对于面向对象编程已经支持的很好了。但是对于开放封闭原则,支持的还是不够的;如果我们要对其进行扩展,如上述例子中增加黄种人项;我们就要更改Creator来适应这种变化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: