创建型--工厂方法模式
来源:互联网 发布:美工工资 编辑:程序博客网 时间:2024/05/20 09:09
设计模式从四个方面来说:这种设计模式的意图,设计模式的动机,设计模式的主要角色,这种设计模式的优缺点。
模式的意图
定义一个用于创建对象的接口,让子类决定实例化哪一个类。可以把它理解为一个工厂,可以生产出不同类型的产品。
模式设计的适用性
- 使用工厂方法可以让用户的代码和某个特定类的子类的代码解耦。
- 工厂方法使用户不知道它所使用的对象是怎样被创建的,只需知道该对象有哪些方法即可。
参与者
- 抽象产品(Product):抽象类或接口,负责定义具体产品必须实现的方法。
- 具体产品(ConcreteProduct):实现Product接口的类
- 构造者(Creator):定义一个称作工厂方法的抽象方法,该方法返回具体产品类的实例。
- 具体构造者(ConcreateCreator):重写工厂方法,返回具体产品的一个实例。
也就是说通常我们在使用工厂方法模式的时候一般要有这几大参与者。
从例子上再来看一下:
抽象产品
public abstract class PenCore { public String color; public abstract void writeWord(String s);}
具体产品
RedPenCore.javapublic class RedPenCore extends PenCore{ public RedPenCore() { color = "红色"; } @Overridepublic void writeWord(String s) { System.out.println("写出" + color + "的字:" + s); }}BluePenCore.java public class BluePenCore extends PenCore{ public BluePenCore() { color = "蓝色"; } @Override public void writeWord(String s) { System.out.println("写出" + color + "的字:" + s); } }BlackPenCore.javapublic class BlackPenCore extends PenCore{ public BlackPenCore() { color = "黑色"; } @Override public void writeWord(String s) { System.out.println("写出" + color + "的字:" + s); } }
构造者
BallPen.javapublic abstract class BallPen { public BallPen() {System.out.println("生产了一只装有" + getPenCore().color + "笔芯的圆珠笔"); } public abstract PenCore getPenCore(); }
具体构造者
BlueBallPen.java public class BlueBallPen extends BallPen{ @Override public PenCore getPenCore() { return new BluePenCore(); }}BlackBallPen.javapublic class BlackBallPen extends BallPen{ @Override public PenCore getPenCore() { return new BlackPenCore(); }}RedBallPen.javapublic class RedBallPen extends BallPen{ public PenCore getPenCore() { return new RedPenCore(); }}
我们通过抽象产品定义了一个笔芯的类,具体产品笔芯实现了抽象产品中的方法,并且定义了不同种类的笔芯。我们通过具体的构造者构造出不同的笔,每种笔内产生一个具体的笔芯的对象,我们可以通过这个对象实例调用具体产品中的方法。
具体的类图:
优点
- 使用工厂方法可以让用户的代码和某个特定类的子类代码解耦。
- 工厂方法使用户不必知道它所使用的对象是怎么样被创建的,只需知道该对象有哪些方法即可。
0 0
- 创建型模式-工厂方法
- 创建型模式-工厂方法
- 创建型--工厂方法模式
- 工厂方法模式(创建型)
- 创建型模式--工厂方法
- 设计模式-创建型模式-工厂方法
- 认识创建型模式---工厂方法模式
- 创建型模式之工厂方法模式
- 【设计模式】创建型模式-工厂方法
- 工厂方法模式(创建型模式)
- 创建型模式--工厂方法模式
- 创建型模式之工厂方法模式
- 创建型模式之工厂方法模式
- 创建型模式之工厂方法模式
- 工厂方法模式-创建型模式
- 创建型模式—工厂方法模式
- Factory Method工厂方法(创建型模式)
- 创建型模式之工厂方法
- linux下Scala的安装
- alloc、init你弄懂50%了吗?
- 浏览器内核大揭秘
- C++中引用(&)的用法和应用实例
- L2-002. 链表去重
- 创建型--工厂方法模式
- 转]Android Parcelable和Serializable的区别,android parcelable
- Cadence基础知识6(cadence的allegro有5种类型的封装Mechanical Symbol及焊盘分类 )
- Android APP中清除缓存功能详解
- NOI2004 郁闷的出纳员
- java使用freemarker模版下载成Excel文件
- Redis源码包自带的服务启动脚本
- 面试杂谈
- ViewPager 实现引导页