当前位置: 首页> 健康> 养生 > 设计模式之工厂方法模式

设计模式之工厂方法模式

时间:2025/7/11 12:26:06来源:https://blog.csdn.net/2301_76862031/article/details/141826862 浏览次数:1次

1.工厂方法模式概念

        当创建对象时,我们不会对构造类的对象进行实例化。这是通过为不同类型的对象调用一个公共的接口来完成的。

2.工厂方法组成部分

1)抽象工厂(Creator)

        声明一个用于创建产品的工厂方法。

2)具体工厂(Concrete Creator)

        实现抽象工厂中的工厂方法,用于创建一个具体产品对象。

3)抽象产品(Product)

        定义了产品的规范,即所有产品共有的公共接口。

4)具体产品(Concrete Product)

        由具体工厂创建,实现抽象产品接口。

3.举个栗子:

如下图:

注:对象的创建过程交给工厂了,我们负责使用,不直接和对象类打交道,而是和工厂打交道.

4.代码实现

1)抽象产品

Animal 

package org.xiji.fucFactory;/*** 动物抽象接口*/
public interface Animal {/*** 动物叫声*/void shout();
}

2)具体产品

Cat

package org.xiji.fucFactory;public class Cat implements Animal{@Overridepublic void shout() {System.out.println("猫:喵喵喵");}
}

Fish

package org.xiji.fucFactory;/*** 鱼*/
public class Fish implements Animal{@Overridepublic void shout() {System.out.println("鱼:········");}
}

3)抽象工厂

AnimalFactory 

package org.xiji.fucFactory;/*** 定义动物工厂接口*/
public abstract class AnimalFactory {/**** 创建动物*/public abstract Animal createAnimal();
}

4)具体工厂

CatAnimalFactory 

package org.xiji.fucFactory;public class CatAnimalFactory extends AnimalFactory{@Overridepublic Animal createAnimal() {return new Cat();}
}

 FishAnimalFactory 

package org.xiji.fucFactory;public class FishAnimalFactory extends AnimalFactory{@Overridepublic Animal createAnimal() {return new Fish();}
}

4.测试代码:

FucFactoryMain 

package org.xiji.fucFactory;/*** 方法工厂模式测试类*/
public class FucFactoryMain {public static void main(String[] args) {/*** 想要一直猫**   猫工厂=====>猫===》叫*/AnimalFactory animalFactory = new CatAnimalFactory();Animal cat = animalFactory.createAnimal();cat.shout();/*** 想要一只鱼*/AnimalFactory animalFactory1 = new FishAnimalFactory();Animal fish = animalFactory1.createAnimal();fish.shout();}
}

5.运行结果

关键字:设计模式之工厂方法模式

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: