欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

设计模式2.工厂方法模式

程序员文章站 2022-03-09 18:58:38
...

简介

首先这里我今天要讲的呢就是工厂模式中的工厂方法模式,在这里呢,我可以举个例子,那就是说,假如你想造两个属于自己品牌的鞋子,暂且我们就叫它ming和huai吧~,那么这个时候就要创建一个抽象的类,代表的是创建工厂,因为ming和huai可以分成两个具体的工厂,分完具体的工厂之后,我们还可以用另外一个抽象的东西,那就是设计产品的接口,这个接口里面可是包含着造鞋子的步骤呢,接下来创建完这个接口之后要做的就是创建一个类来完成对它的实现类。

工厂方法模型代码

抽象工厂

public interface Creater {
    /*
    创建一个产品对象,并且对这个参数可以自行进行配置
     */
    public <T extends Product>T factory(Class<T> c);
}

抽象产品

public interface Product {
    //创建一个方法1
    public void method1();
    //创建一个方法2
    public void method2();
}

具体工厂

import java.io.IOException;

public class ConcreateCreater implements  Creater{
    public <T extends Product> T factory(Class<T> c)
    {
        Product product=null;
        try{
            product=(Product)Class.forName(c.getName()).newInstance();
        }catch(Exception e){

        }
        return (T) product;
    }
}

具体产品

public class ConcreteProduct implements  Product{
    @Override
    public void method1() {

    }

    @Override
    public void method2() {

    }
}

应用代码

public class FactoryMethodDemo {
    public static void main(String[] args) {
        Creater creater=new ConcreateCreater();
        Product product=creater.factory(ConcreteProduct.class);
    }
}

实例

下面这个实例时一个常见的生产水果的实例

public interface FruitGardener {
    //进行一个具体的产品嘛
    public Fruit factory();
}

public interface Fruit {
    public void grow();//生长
    public void harvest();//收获
    public void plant();//栽种

}

public class AppleGarden implements  FruitGardener{
    public Fruit factory(){
        return new Apple();
    }
}

public class Apple implements  Fruit{
    @Override
    public void grow() {
        System.out.println("正在生长");
    }

    @Override
    public void harvest() {
        System.out.println("收获生长");
    }

    @Override
    public void plant() {
        System.out.println("生长起来");
    }
}

结果:

设计模式2.工厂方法模式