抽象工厂

抽象工厂模式(Abastract Factory Pattern)是指提供一个创建一系列相关或相互依赖对象的接口,无需指定他们具体的类。客户端(应用层)不依赖于产品类实例如何被创建、实现等细节,强调的是一系列相关的产品对象(属于同一产品族)一起使用创建对 象需要大量重复的代码。需要提供一个产品类的库,所有的产品以同样的接口出现,从 而使客户端不依赖于具体实现。

 

 相当于在工厂方法里新增了产品

新增的产品INote

package factory.product.note;

public interface INote {
    String note();
}
package factory.product.note;

public class JavaNote implements INote {

    public String note() {
        System.out.println("JavaNote.......");
        return "JavaNote";
    }
}

 

package factory.product.note;

public class PythonNote implements INote {

    public String note() {
        System.out.println("PythonNote.......");
        return "PythonNote";
    }
}

抽象工厂代码

package factory.abs;

import factory.product.course.ICourse;
import factory.product.note.INote;

public interface AbstractFactory {
    ICourse createCourse();
    INote createNote();

}
package factory.abs;


import factory.product.course.ICourse;
import factory.product.course.JavaCourse;
import factory.product.note.INote;
import factory.product.note.JavaNote;

public class JavaAbstractFactory implements AbstractFactory{
    public ICourse createCourse() {
        return new JavaCourse();
    }
    public INote createNote() {
        return new JavaNote();
    }
}

 

package factory.abs;

import factory.product.course.ICourse;
import factory.product.course.PythonCourse;
import factory.product.note.INote;
import factory.product.note.PythonNote;

public class PythonAbstractFactory implements AbstractFactory {
    public ICourse createCourse() {
        return new PythonCourse();
    }
    public INote createNote() {
        return new PythonNote();
    }
}

 测试

package factory.abs;

public class AbstractFactoryTest {

    public static void main(String[] args) {
        AbstractFactory javaFactory = new JavaAbstractFactory();
        javaFactory.createCourse().record();
        javaFactory.createNote().note();

        AbstractFactory pythonFactory = new PythonAbstractFactory();
        pythonFactory.createCourse().record();
        pythonFactory.createNote().note();

    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值