工厂方法

定义:定义一个建立对象的接口,由子类决定要实例化的对象类型,工厂方法让类的实例化推迟到子类中java

 

要点:框架

1.工厂模式让实现和使用解耦ide

2.工厂方法是继承于超类,实现超类中抽象建立对象的接口,不用于简单工厂,使用组合方式来达到解耦的目的工具

3.工厂方法更像是一种框架,而简单工厂只是一种简单的实现方式,像一种工具测试

4.工厂方法并非真正运行时决定建立的对象,而是选择的子类决定了建立的对象,一样能够用多个简单工厂的方式来达到这样的目的。可是简单工厂违反了OO设计原则“依赖抽象,不要依赖具体类”设计

 

实现:code

package com.jv.designpatterns.factory.factorymethod;

//定义匹萨的超类
public interface Pizza {

}
package com.jv.designpatterns.factory.factorymethod;

public class PizzaA implements Pizza {

}
package com.jv.designpatterns.factory.factorymethod;

public class PizzaB implements Pizza {

}
package com.jv.designpatterns.factory.factorymethod;

public abstract class PizzaStore {
	
	//定义抽象建立对象实例方法,交有子类决定建立的对象类型
	public abstract Pizza createPizza();
	
	public void orderPizza() {
		Pizza p = createPizza();
		//其余方法
	}
}
package com.jv.designpatterns.factory.factorymethod;

public class PizzaStoreA extends PizzaStore {

	//子类实现抽象父类中的 建立匹萨对象的抽象方法,由子类决定要建立的对象究竟是谁
	@Override
	public Pizza createPizza() {
		return new PizzaA();
	}

}
package com.jv.designpatterns.factory.factorymethod;

public class PizzaStoreB extends PizzaStore {

	//子类实现抽象父类中的 建立匹萨对象的抽象方法,由子类决定要建立的对象究竟是谁
	@Override
	public Pizza createPizza() {
		return new PizzaB();
	}

}

没有更详细的模拟场景写测试代码,感兴趣的同窗能够尝试着添加代码来完成测试,动动手,动动脑对象

相关文章
相关标签/搜索