工厂方法模式

工厂方法模式:

工厂方法模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期拓展的目的。

工厂方法模式的意义是定义一个创建产品的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品

工厂方法经常用在以下两种情况中第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来。Java Collection中的iterator() 方法即属于这种情况第二种情况,只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。

 

一个学生接口:default可以解决合并复用原则

public interface StudentDao {
  public void beadTime();
  public void schoolTime();
  default void school() {
	  System.out.println("西安工业大学");
  }
}

一个学生实现类:

public class Student1 implements StudentDao{

	@Override
	public void beadTime() {
		// TODO Auto-generated method stub
		System.out.println("6点");
	}

	@Override
	public void schoolTime() {
		// TODO Auto-generated method stub
		System.out.println("7点");
	}
	
	
}

一个学生工厂:

public interface StudentFactory {
   public StudentDao chose();
}

一个工厂实现类:

public class Student1Impl implements StudentFactory{

	@Override
	public StudentDao chose() {
		
		return new Student1();
	}

}

调用:

public class User {
  public static void main(String[] args) {
	  StudentDao ss = new Student1Impl().chose();
	  ss.beadTime();
	  ss.schoolTime();
	  ss.school();
	  
}
}

 

定义学生工厂和实现类为了实现设计模式的总原则:合并原则。可以拓展程序,不用修改程序。

 如果再来有个学生,增加一个学生实现类,再增加一个工厂实现类即可。不用修改其他程序。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值