设计模式之抽象工厂模式的学习心得
来源:互联网 发布:directx 11游戏编程 编辑:程序博客网 时间:2024/06/05 11:43
对于抽象工厂模式,我们首先要明白的是——其是建立在工厂模式基础之上的,其也属于创建型设计模式。
在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显示指定它们的类,每个生成的工厂都能按照工厂模式提供对象。
理解:创建抽象工厂类来获取工厂对象,创建继承抽象类的工厂类,生成实体类对象以及创建一个工厂创造器来获取工厂。
思路:
1.创建抽象工厂族类;
2.创建工厂接口;
3.创建抽象工厂族子类和实现工厂接口类;
4.创建个工厂创造器/生成器类,通过字符串来获取工厂;
5.设计public类,通过main实现调用。
具体设计:
1.设计抽象工厂族类AbstractFactory,其中抽象方法名为getBall、getFruit,返回值分别为Ball和Fruit;
2.设计名为Ball和Fruit俩个接口,其中Ball接口内的方法为play,返回值为void,Fruit接口内的方法为eat(),返回值为void;
3.分别设计三个具体实现Ball接口的类:Baseball、Basketball和Football;三个具体实现Fruit接口的类:Apple、Orange和Pear;
4.设计两个继承抽象类的子类,分别基于给定的信息生成实体类对象:BallFactory和FruitFactory;
5.设计工厂生成器FactoryProducer来获取具体工厂;
6.设计public类AbstractFactoryDemo来实现调用过程。
具体代码模块:
1.抽象类AbstractFactory:
abstract class AbstractFactory{ abstract Ball getBall(String ball); abstract Fruit getFruit(String fruit);}
2.接口Ball和Fruit:
interface Ball{ void play();}interface Fruit{ void eat();}
3.实现接口类:
class Baseball implements Ball{public void play(){System.out.println("棒球");}}
class Basketball implements Ball{public void play(){System.out.println("篮球");}}
class Football implements Ball{public void play(){System.out.println("足球");}}
class Apple implements Fruit{public void eat(){System.out.println("苹果");}}
class Orange implements Fruit{public void eat(){System.out.println("橘子");}}
class Pear implements Fruit{public void eat(){System.out.println("梨");}}
4.设计基础抽象类的两个子类BallFactory和FruitFactory:
class BallFactory extends AbstractFactory{public Ball getBall(String BallType){if(BallType==null){return null;}if(BallType=="篮球"){return new Basketball();}else if(BallType=="棒球"){return new Baseball();}else if(BallType=="足球"){return new Football();}return null;}public Fruit getFtuit(String FruitType){return null;}}
class FruitFactory extends AbstractFactory{public Fruit getFruit(String FruitType){if(FruitType==null){return null;}if(FruitType=="苹果"){return new Apple();}else if(FruitType=="橘子"){return new Orange();}else if(FruitType=="梨"){return new Pear();}return null;}public Ball getBall(String BallType){return null;}}5.工厂制造类FactoryProducer:
class FactoryProducer{public static AbstractFactory getFactory(String factory){if(factory=="球"){return new BallFactory();}else if(factory=="水果"){return new FruitFactory();}return null;}
6.public主类AbstractFactoryDemo来实现调用:public class AbstractFactoryDemo{public static void main(String[] args){AbstractFactory af1=FactoryProducer.getFactory("水果");Fruit f1=af1.getFruit("苹果");f1.eat();}}
总结:抽象工厂模式的实现可以划分两部分:第一部分即是对工厂的处理;第二部分即是对工厂内部具体的处理;最后再从顶向下的调用即可。
- 设计模式之抽象工厂模式的学习心得
- 设计模式之工厂模式的学习心得
- 设计模式之抽象工厂
- 设计模式 之 抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式之-抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- 设计模式 之 抽象工厂
- 设计模式之抽象工厂
- 设计模式之抽象工厂
- Linux下安装DB2
- wildfly服务器系列--widlfly启动Operation ("add") failed失败以及org.dom4j.DocumentFactory cannot be cast to org.d
- iOS带有缩放效果的自动轮播图
- 【LeetCode】62.Unique Paths解题报告
- concat、reverse方法、随机排序、随机函数
- 设计模式之抽象工厂模式的学习心得
- java 编程中遇到空指针异常的可能原因java.lang.nullpointerexception
- C/C++ 读写文件
- win10 python 3.5.2 安装lightgbm
- BSEG和BSIS、BSAS、BSID、BSAD、BSIK、BSAK六个表的关系(转)
- 多行新闻滚动栏实现
- Codeforces Drinks
- Python的socket网络编程1 sock简单通信实现
- scala 第一周编程作业