vlambda博客
学习文章列表

设计模式才是Java灵魂,Java创建型模式的抽象工厂模式

无规矩不成方圆

Java23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。

今天温习一下抽象工厂模式。

工厂模式和抽象工厂模式的区别:

工厂模式定义为一个工厂只能生产出来同等级的产品,比如电视工厂就只能生产出来电视,空调厂只能生产出来空调。
但是生活中往往都是综合性工厂,比如格力既可以生产出来空调又可以生产出来冰箱,甚至可以生产出来洗衣机。
这就应运而生的诞生了抽象工厂模式, 抽象 既是不具体的,所以我们通过 抽象工厂模式 就类似的定义了综合工厂,可以生产不同等级的产品。

JAVA抽象工厂模式实例:


1.定义产品。

class Product1{    public String name;}
class Product2{ public String name;}



2.定义抽象工厂,提供了生产产品的方法。

interface AbstractFactory{ public Product1 newProduct1(); public Product2 newProduct2();}

3.定义具体工厂,实现了生产产品的方法。

class ConcreteFactory1 implements AbstractFactory{ public Product1 newProduct1() { System.out.println("具体工厂 1 生成-->具体产品 1"); return new ConcreteProduct11(); } public Product2 newProduct2() {        System.out.println("具体工厂 1 生成-->具体产品 2"); return new ConcreteProduct21(); }}

4.定义具体工厂,实现了生产产品的方法。

class ConcreteFactory1 implements AbstractFactory{ public Product1 newProduct1() { System.out.println("具体工厂 1 生成-->具体产品 1"); return new ConcreteProduct11(); } public Product2 newProduct2() {        System.out.println("具体工厂 1 生成-->具体产品 2"); return new ConcreteProduct21(); }}

5.测试。

class Test{     public static void main(String[] args) {      ConcreteFactory1 cf=new ConcreteFactory1();      Product1 p1=cf.newProduct1();      Product1 p2=cf.newProduct2(); }}

说明:这样就可以通过工厂类ConcreteFactory1创建出来不同的产品了(Java里指不同的对象)。



☆ END ☆