概念:工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化那一个类。工厂方法模式使一个类的实例化延迟到其子类。
又称为工厂模式,也叫虚拟构造器模式或者多态工厂模式。
在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。
package 创建型模式.工厂方法模式;
/** * @author 10073
* @date 2021/12/7 * @TIME 20:45
*/
abstract class Weapon{
abstract void display();
//显示兵器名称
}
//2.1机关枪继承
Weaponclass MachineGun extends Weapon { void display() {
System.out.println("机关枪");
}}
//2.2手枪继承Weapon
class Pistol extends Weapon { void display() {
System.out.println("手枪");
}}
//2.3狙击步枪继承Weapon
class SniperRifle extends Weapon{
@Override void display() {
System.out.println("狙击步枪");
}}
//2.3武器工厂接口
interface WeaponFactory{
Weapon createWeapon();
}
//创建机关枪工厂
class MachineGunFactory implements WeaponFactory{
@Override public Weapon createWeapon() {
return new MachineGun();//返回机关枪
}}
//4.2创建 手枪工厂
class PistolFactory implements WeaponFactory{
@Override public Weapon createWeapon() {
return new Pistol();
//返回手枪
}}
//创建狙击步枪工厂
class SniperRifleFactory implements WeaponFactory{
@Override public Weapon createWeapon() {
return new SniperRifle();
}}
public class Demo{
public static void main(String[] args) {
WeaponFactory wf1=new MachineGunFactory();
Weapon w1=wf1.createWeapon();//制造机关枪
w1.display();
//生产手枪
WeaponFactory wf2=new PistolFactory();
Weapon w2 =wf2.createWeapon();
w2.display();
WeaponFactory wf3= new SniperRifleFactory();
Weapon w3= wf3.createWeapon();
w3.display(); }}