码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式 ——抽象工厂模式

时间:2015-11-17 11:11:23      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

当我们创建对象时,new的时候,往往多考虑下,能否用到创建类型的设计模式。本章我们讲解下 抽象工厂模式的使用及优点。

1 抽象工厂模式,从设计角度来讲,完全遵循了 开闭原则,当对程序进行拓展的时候,不必修改原有的代码,只需在原有的基础上进行添加。 这就要求  工厂 和 产品 都需要用接口来抽象化。

以下的代码分别问 学生接口及AB学生的具体实现  和工厂接口及生产AB学生的具体工厂实现。

public interface StudentInterface {

public void privateProperty();

}

public class StudentA implements StudentInterface{

@Override

public void privateProperty() {

// TODO Auto-generated method stub

System.out.println("student a");

}

}

public class StudentB implements StudentInterface{

@Override

public void privateProperty() {

// TODO Auto-generated method stub

System.out.println("student b");

}

}

///////////////////////////////////////////////////////////////////////////////////

public interface FactoryInterface {

public StudentInterface  createStudent();

}

public class FactoryStudentA implements FactoryInterface{

@Override

public StudentInterface createStudent() {

// TODO Auto-generated method stub

return new StudentA();

}

}

public class FactoryStudentB implements FactoryInterface{

@Override

public StudentInterface createStudent() {

// TODO Auto-generated method stub

return new StudentB();

}

}

///////////////////////////////////

测试

public class TestAbstractFactory {

public static void main(String[] args) {

// TODO Auto-generated method stub       

  FactoryInterface facC=new FactoryStudentC();

  StudentInterface stuC=facC.createStudent();

  stuC.privateProperty();

}

}

2如果我们程序有需求,需要增加C学生,那么我们只需定义一个C学生类 实现学生接口,以及实现工厂接口用以创建生成学生C对象的工厂。

public class StudentC implements StudentInterface{

@Override

public void privateProperty() {

// TODO Auto-generated method stub

System.out.println("student c");

}

}

public class FactoryStudentC implements FactoryInterface{

@Override

public StudentInterface createStudent() {

// TODO Auto-generated method stub

return new StudentC();

}

}

从代码中,我们可以明显的体会到,当需要对程序进行拓展的时候,我们是不需去修改以前的代码的,只需两个实现类,即可完成代码的拓展功能,完全遵循了软件设计的开闭原则,是不是很爽呢?

设计模式 ——抽象工厂模式

标签:

原文地址:http://my.oschina.net/jixin/blog/531194

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!