一、定义与特点
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。文章源自新逸网络-https://www.xinac.net/8871.html
- 工厂模式适用于以下场景
1、客户只知道创建产品的工厂名,而不知道具体的产品名。
2、创建对象的任务由多个具体子工厂中的某一个完成,而抽象工厂只提供创建产品的接口。
3、客户不关心创建产品的细节,只关心产品的品牌。
二、实现方式
(1)创建接口
创建一个People
的接口,定义一个skill
的方法。文章源自新逸网络-https://www.xinac.net/8871.html
public interface People {
void skill();
}
(2)实现接口
创建类Teacher
,并实现People
接口文章源自新逸网络-https://www.xinac.net/8871.html
public class Teacher implements People {
@Override
public void skill() {
System.out.println("I am a teacher.");
}
}
创建类Student
,并实现People
接口文章源自新逸网络-https://www.xinac.net/8871.html
public class Student implements People {
@Override
public void skill() {
System.out.println("I am a student.");
}
}
(3)创建工厂
创建工厂类PeopleFactory
,根据传入的参数不同,返回不同的实例文章源自新逸网络-https://www.xinac.net/8871.html
public class PeopleFactory {
public People getPeople(String className) {
if (className.equals(Student.class.getSimpleName())) {
return new Student();
} else if (className.equals(Teacher.class.getSimpleName())) {
return new Teacher();
}
return null;
}
}
(4)使用工厂
测试工厂类的实现文章源自新逸网络-https://www.xinac.net/8871.html
public class Test {
public static void main(String[] args) {
PeopleFactory factory = new PeopleFactory();
People p = factory.getPeople("Teacher");
p.skill();
}
}
测试输出效果文章源自新逸网络-https://www.xinac.net/8871.html
I am a teacher.
三、相关内容
- 优缺点
1、一个调用者想创建一个对象,只要知道其名称就可以了。
2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。
3、屏蔽产品的具体实现,调用者只关心产品的接口。
4、每次增加一个产品时,都需要增加一个具体类和对象实现工厂,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。 - 模式结构
1、抽象工厂(Abstract Factory):创建产品的接口,调用者通过它访问具体工厂的工厂方法来创建产品。
2、具体工厂(ConcreteFactory):实现抽象工厂中的抽象方法,完成具体产品的创建。
3、抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能。
4、具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应。 - 参考文章
1、https://www.runoob.com/design-pattern/factory-pattern.html
2、http://c.biancheng.net/view/1348.html
文章源自新逸网络-https://www.xinac.net/8871.html 文章源自新逸网络-https://www.xinac.net/8871.html
新逸IT技术
扫一扫关注微信公众号
评论