设计模式-工厂方法(Factory Method)模式

工厂方法模式和模板方法模式很相似,模板方法(Template Method)是将具体的实现交给子类,而工厂方法(Factory Mehod)是将具体类的创建交给了子类。

在工厂方法模式中,父类只负责定义生成实例的方式,但并不决定要生成具体的类,具体的类的创建都交给子类去实现。这样就可以将生成实例的框架和具体生成实例的类解耦

下面是一个简单的示例:

1. Product类和Factory类属于framework包,属于框架层,定义了类生成的方式。

2. Tv类和TvFactory类属于tv包,属于具体的产品层,定义了类具体的实例化。

 

Factory和Product都是抽象类,Factory类只定义了createProduct方法,而具体要创建什么Product则由子类来实现,而Product类也只是定义了use方法,具体的实现也由子类来实现。

Factory.java

package factoryMethod.framework;
public abstract class Factory {

    public abstract Product createProduct(String productName);
}

Product.java

package factoryMethod.framework;
public abstract class Product {
    public abstract void use();
}

TvFactory.java

package factoryMethod.tv;

import factoryMethod.framework.Factory;
import factoryMethod.framework.Product;

public class TvFactory extends Factory {

    public Product createProduct(String productName) {
        return new Tv(productName);
    }
}

Tv.java

package factoryMethod.tv;

import factoryMethod.framework.Product;
public class Tv extends Product {
    private String name;

    public Tv(String name) {
        this.name = name;
    }

    public void use() {
        System.out.println("打开"+name+"电视");
    }
}

测试方法如下:

public static void main(String[] args){
    Factory tvFactory = new TvFactory();
    Product ch = tvFactory.createProduct("长虹");
    Product tcl = tvFactory.createProduct("TCL");
    ch.use();
    tcl.use();
}

测试结果:

工厂方法模式,主要的思路是将“框架”和“具体加工”这两方面内容分开,实例的生成不会影响框架的。当我们想要创建新的产品和工厂时,只需要分别继承Factory和Product即可,具体的实现ConcreteFactory和ConcreteProduct也不会对原有的框架造成影响。

工厂方法模式,主要是用通用模板来定义生成实例的方式,属于创建型的设计模式

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值