Java学习笔记---设计模式之抽象工厂模式
来源:互联网 发布:科盟网络 编辑:程序博客网 时间:2024/04/29 09:57
一、引言
闲时多写写博客,忙时多敲敲代码,充实又有收获,何乐而不为?马上要找工作了,后悔以前太懒惰,积累太少,现在只能奋起追逐。by the way,有好工作的可以求介绍。坐标:杭州、武汉。好了,言归正传,今天的正题是抽象工厂模式。
二、什么叫抽象工厂模式
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
三、抽象工厂的类图
四、抽象工厂方式中的角色
(1)抽象工厂角色:抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。
(2)具体工厂角色:具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。
(3)抽象产品角色:抽象模式所创建的所有对象的父类,它负责描述所有实现共有的公共接口。
(4)具体产品角色:抽象模式所创建的具体实例对象。
五、举例说明
工程结构:
Fruit.java
package designModeAbstractFactory;//抽象产品类public interface Fruit {public String getName();public String getColor();}Apple.java
package designModeAbstractFactory;//具体产品角色类public class Apple implements Fruit {@Overridepublic String getName() {// TODO Auto-generated method stubreturn "Apple";}@Overridepublic String getColor() {// TODO Auto-generated method stubreturn "Red";}public void appleDo(){System.out.println("apple can be eat");}}Orange.java
package designModeAbstractFactory;//具体产品类public class Orange implements Fruit{@Overridepublic String getName() {// TODO Auto-generated method stubreturn "Orange";}@Overridepublic String getColor() {// TODO Auto-generated method stubreturn "Yellow";}public void orangeDo(){System.out.println("orange do can be look");}}IFruitFactory.java
package designModeAbstractFactory;//抽象工厂角色public abstract class IFruitFactory {public abstract Apple createApple();public abstract Orange createOrange();}FruitFactory.java
package designModeAbstractFactory;//具体工厂类public class FruitFactory extends IFruitFactory {@Overridepublic Apple createApple() {// TODO Auto-generated method stubreturn new Apple();}@Overridepublic Orange createOrange() {// TODO Auto-generated method stubreturn new Orange();}}AbstractFactoryTest.java
package designModeAbstractFactory;//测试类public class AbstractFactoryTest {public static void main(String args[]){IFruitFactory fruitFactory = new FruitFactory();Apple apple = fruitFactory.createApple();System.out.println(apple.getName());System.out.println(apple.getColor());apple.appleDo();Orange orange=fruitFactory.createOrange();System.out.println(orange.getName());System.out.println(orange.getColor());orange.orangeDo();}}
运行结果:
Apple
Red
apple can be eat
Orange
Yellow
orange do can be look
六、总结
无论是简单工厂模式、工厂方法模式还是抽象工厂模式,他们之间都是可以相互转化的,而不同之处在于他们所对应的产品种类规模和产品种类级别。因此只要灵活运用,不必在意具体是那种方式。
所以,在使用工厂模式时,只需要关心降低耦合度的目的是否达到了。
0 0
- Java学习笔记---设计模式之抽象工厂模式
- java设计模式笔记之抽象工厂
- 设计模式学习笔记之抽象工厂设计模式
- 设计模式之--抽象工厂模式(学习分析笔记)
- java 设计模式 学习笔记(3) 抽象工厂模式
- java设计模式学习笔记--抽象工厂模式
- java设计模式学习笔记-抽象工厂模式
- java设计模式学习笔记--抽象工厂模式
- Java设计模式笔记之抽象工厂模式
- 设计模式学习笔记-抽象工厂模式
- 设计模式学习笔记--抽象工厂模式
- 设计模式学习笔记-抽象工厂模式
- 设计模式笔记之---抽象工厂模式
- 《设计模式》笔记之抽象工厂模式
- Java研究之学习设计模式-抽象工厂模式详解
- 设计模式之抽象工厂模式学习
- 学习设计模式之“抽象工厂模式”
- java设计模式之抽象工厂模式
- 开发应用的一般流程(个人)
- UI优化技巧:使用ViewStub
- 在制作水晶报表时遇到此错误未处理System.IO.FileNotFoundException HResult=-2147024894
- CAP理论十二年回顾:"规则"变了
- C语言之数组专题:数组指针、指针数组、数组做函数参数退化、数组名、数组类型
- Java学习笔记---设计模式之抽象工厂模式
- 字符流的文件读取
- 【Node.js基础篇】(十)使用net模块和Readline模块实现Socket通信
- Ubuntu 基础操作
- iOS之OC随笔-九宫格的算法简单实现
- 当模板函数遇上数组参数
- ASP.NET运行时报 对象名 'users' 无效 错误信息
- 收获
- 字符流的方式实现文件的复制