设计模式(二):抽象工厂AbstractFactory(创建型模式)

来源:互联网 发布:香港第一美女是谁知乎 编辑:程序博客网 时间:2024/05/17 05:08

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

一.适用性

1.一个系统要独立于它的产品的创建、组合和表示时。

2.一个系统要由多个产品系列中的一个来配置时。

3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。

4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。

二.实例

package com.zoey.designPattern.AbstractFactory;public interface IStudent {    void eat();}
package com.zoey.designPattern.AbstractFactory;public interface ITeacher {    void eat();}
package com.zoey.designPattern.AbstractFactory;public class FemaleTeacherPerson implements ITeacher {    @Override    public void eat() {        System.out.println("女教师去员工餐厅用餐!");    }}
package com.zoey.designPattern.AbstractFactory;public class MaleTeacherPerson implements ITeacher {    @Override    public void eat() {        System.out.println("男教师去员工餐厅用餐!");    }}
package com.zoey.designPattern.AbstractFactory;public class FemaleStudentsPerson implements IStudent {    @Override    public void eat() {        System.out.println("女同学去学生食堂用餐!");    }}
package com.zoey.designPattern.AbstractFactory;public class MaleStudentsPerson implements IStudent {    @Override    public void eat() {        System.out.println("男同学去学生食堂用餐!");    }}
package com.zoey.designPattern.AbstractFactory;public interface IPersonFactory {       ITeacher createTeacher();       IStudent createStudent();}
package com.zoey.designPattern.AbstractFactory;public class manFactory implements IPersonFactory {    @Override    public ITeacher createTeacher() {        return new MaleTeacherPerson();    }    @Override    public IStudent createStudent() {        return new MaleStudentsPerson();    }}
package com.zoey.designPattern.AbstractFactory;public class womanFactory implements IPersonFactory {    @Override    public ITeacher createTeacher() {        return new FemaleTeacherPerson();    }    @Override    public IStudent createStudent() {        return new FemaleStudentsPerson();    }}
package com.zoey.designPattern.AbstractFactory;public class test {    public static void main(String[] args) {        womanFactory womanF = new womanFactory();        ITeacher womanTeacher = womanF.createTeacher();        womanTeacher.eat();        IStudent womanStudent = womanF.createStudent();        womanStudent.eat();        manFactory manF = new manFactory();        ITeacher manTeacher = manF.createTeacher();        manTeacher.eat();        IStudent manStudent = manF.createStudent();        manStudent.eat();    }}

结果:

女教师去员工餐厅用餐!女同学去学生食堂用餐!男教师去员工餐厅用餐!男同学去学生食堂用餐!

比喻:摘自网络

这里写图片描述

0 0
原创粉丝点击