设计模式(二):抽象工厂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
- 设计模式(三)抽象工厂模式(AbstractFactory)-创建型
- 设计模式(二):抽象工厂AbstractFactory(创建型模式)
- 设计模式--创建型-AbstractFactory(抽象工厂)
- 抽象工厂模式(AbstractFactory)-设计模式(二)
- 创建型模式之抽象工厂模式(AbstractFactory)
- 面向对象设计模式之AbstractFactory抽象工厂模式(创建型)
- java设计模式之创建型模式-抽象工厂(AbstractFactory)
- 设计模式-创建型模式#抽象工厂AbstractFactory
- 设计模式-创建型模式:抽象工厂 AbstractFactory
- 设计模式(4)--AbstractFactory(抽象工厂模式)--创建型
- 对象创建型之AbstractFactory(抽象工厂模式)
- 抽象工厂模式(AbstractFactory)
- 设计模式的实现(C++)------抽象工厂模式(AbstractFactory)
- 设计模式C++之七(AbstractFactory抽象工厂模式)
- 设计模式 (三)抽象工厂模式(AbstractFactory)
- 设计模式 (三)抽象工厂模式(AbstractFactory)
- 设计模式 (三)抽象工厂模式(AbstractFactory)
- 浅谈 java 设计模式--抽象工厂模式(AbstractFactory pattern)
- POJ 2546 Circular Area 两圆相交面积
- css控制内容显示省略号
- DJANGO学习笔记
- Android软件下载及环境配置(SDK无需代理翻墙,离线更新)
- 旋转链表
- 设计模式(二):抽象工厂AbstractFactory(创建型模式)
- AFNetWorking 深度理解
- 外观模式/门面模式
- CSS 选择器参考手册
- Inspector属性面板中[HideInInspector]、ExecuteInEditMode等属性介绍
- 【Android】Android之开发问题集
- 详细解析Linux /etc/passwd文件
- 汉若塔问题
- adroid解析XML三种方式