工厂模式,之前讲述了简单工厂模式。两者是什么区别,暂时。先来讲解一下工厂模式

工厂模式主要是通过接口来实现产品的制作
在main方法创建对象的时候得到这个接口的抽象方法,而这个抽象方法就是为实现这个共有功能而存在

做一个比喻,(大话设计模式里面的)
雷锋精神是一个共有的功能,而学习雷锋现在存在两种人,学生和社会人士。那么该怎么样实现呢
大家可以按照之前学习的简单工厂模式写一下,你会发现如果再加一种人的话就要改变switch,在里面添加。但这样的话就违背了
开发-封闭原则

而工厂模式就可以解决这一个问题
先看代码

雷锋类
public class LeiFeng {
   public void Sweep(){
       System.out.println("扫地");
  }
   public void Wash(){
       System.out.println("洗衣");
  }
   public void BuyRice(){
       System.out.println("买米");
  }
}
而现在有学生类和社会人士类要实现这个方法
public class Undergraduate extends LeiFeng {
}
public class Volunteer extends LeiFeng {
}
接下来就是重点了
雷锋工厂
interface IFactory {
   LeiFeng CreateLeiFeng();
}
学生工厂和社会人士的工厂
public class UndergrouateFactory implements IFactory {
   @Override
   public LeiFeng CreateLeiFeng() {
       return new Undergraduate();
  }
}
public class VolunteerFactory implements IFactory{
   @Override
   public LeiFeng CreateLeiFeng() {
       return new Volunteer();
  }
}
在main方法中
IFactory iFactory = new VolunteerFactory();
       LeiFeng student = iFactory.CreateLeiFeng();
       student.BuyRice();
       student.Sweep();
       student.Wash();
       IFactory iFactory1 = new UndergrouateFactory();
       LeiFeng leiFeng = iFactory1.CreateLeiFeng();
       leiFeng.BuyRice();
       leiFeng.Sweep();
       leiFeng.Wash();
现在就可以看出来差距
简单工厂
图片描述
工厂模式
图片描述


YacaToy
2 声望3 粉丝

« 上一篇
代理模式