设计模式之工厂模式

工厂模式多用于创建初始化比较复杂繁琐的实体,并且对程序中实体的创建进行统一的配置及管理,大大提高程序的可维护性和可扩展性。

 

工厂模式之工厂方法

 

程序中实体类较少且划分比较简单是可以使用工厂方法模式

 

例:有学生类(Student) 老师类(Teacher)同时继承与人(Person)

 

我们可以设计这样的工厂类为我们产出对象

 

public class PersonFactory {
 
 public static final int STUDENT = 1;
 
 public static final int TEACHER = 2;
 
 public static Person getPerson(int type){
  Person person = null;
  if(type == PersonFactory.STUDENT) {
   person =  new Student();
  }else if(type == PersonFactory.TEACHER) {
   person = new Teacher();
  }
  return person;
 }
}

 

我们可以这样来获取对象 Student student = (Student)PersonFactory.getPerson(PersonFactory.STUDENT);

 

工厂模式之抽象工厂

 

程序中的实体分类不会这么简单,例如 学生还分为大学生 小学生,老师也分为大学老师 小学老师。工厂模式有该是什么样子的。

 

我们可以把工厂也细分为生产大学老师学生的工厂和生产小学老师和学生的工厂。但是我们有一个总工厂是这两个分工厂的抽象工厂。代码貌似是这样子的

 

总工厂:

 

public abstract class Factory {
 
 public abstract Student creatStudent();
 
 public abstract Teacher creatTeacher();
 
 public static Factory getFactory(int type) {
  Factory factory = null;
  if(type == 1) {
   factory = new DaFactory();
  }else if(type == 2) {
   factory = new XiaoFactory();
  }
  return factory;
 }

}

 

大学工厂:

 

public class DaFactory extends Factory{
 
 @Override
 public  Student creatStudent() {
  return new DaStudent();
 }

 @Override
 public Teacher creatTeacher() {
  return new DaTeacher();
 }

}

 

小学工厂:

 

public class XiaoFactory extends Factory{

 @Override
 public Student creatStudent() {
  return new XiaoStudent();
 }

 @Override
 public Teacher creatTeacher() {
  return new XiaoTeacher();
 }

}

 

 

再想获取实体对象就变成了这样 Student creatStudent = Factory.getFactory(2).creatStudent();

 

上面这个例子中其实把工厂也工厂话了,不管你们看没看懂,反正我是写完了...... 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值