设计模式-工厂方法模式
来源:互联网 发布:com域名删除的准确时间 编辑:程序博客网 时间:2024/05/16 07:41
工厂方法的定义
工厂方法模式是一种常见的创建型设计模式,在简单工厂模式中已经指出,简单工厂模式最大的缺点是违反了面向对象的开放封闭设计原则,实际上,工厂方法模式是简单工厂模式的进一步抽象和推广,将工厂中的逻辑判断通过接口的形式提取出来,让调用端做选择。
ULM类图
从类图中可以清晰的看到,简单工厂模式中的工厂被拆分成工厂接口和实现类。
代码实现
/** * 雷锋 做的好事,大家都要学习 * */public class LeiFeng { public void sweep(){ System.out.println("扫地"); } public void wash(){ System.out.println("洗衣服"); } public void buyRice(){ System.out.println("买米"); }}//学习雷锋的大学生public class Undergraduate extends LeiFeng{}//学习雷锋的社区志愿者public class Volunteer extends LeiFeng{}//雷锋工厂public interface IFactory { LeiFeng createLeiFeng();}public class UndergrateFactory implements IFactory{ @Override public LeiFeng createLeiFeng() { // TODO Auto-generated method stub return new Undergraduate(); }}public class VolunteerFactory implements IFactory { @Override public LeiFeng createLeiFeng() { // TODO Auto-generated method stub return new Volunteer(); }}public class Client { public static void main(String[] args) { IFactory factory = new UndergrateFactory(); LeiFeng student = factory.createLeiFeng(); student.buyRice(); }}
工厂方法模式与简单工厂模式对比
工厂方法模式定义了一个用于创建对象的接口,让子类决定实例化哪个类,工厂方法使得对一个类的实例化延迟到其子类中。
简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖
工厂方法模式实现时,客户端需要决定实例化哪个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码中进行,当要增加功能时,本来是修改工厂类的,而现在是修改客户端。
0 0
- 设计模式--工厂方法
- 工厂方法设计模式
- 设计模式-工厂方法
- 【设计模式】【工厂方法】
- 设计模式 - 工厂方法
- 工厂方法设计模式
- 工厂方法设计模式
- 【设计模式】工厂方法
- 设计模式--工厂方法
- 设计模式---工厂方法
- 设计模式-工厂方法
- 工厂方法设计模式
- 工厂方法设计模式
- 设计模式-工厂方法
- 设计模式 工厂方法
- 工厂方法设计模式
- 工厂方法设计模式
- 设计模式 - 工厂方法
- 将mysql中查询出来的数据 序列化到protobuffer消息结构体中
- 第一次blog记
- 1039. Course List for Student (25)
- 331. Verify Preorder Serialization of a Binary Tree
- 排序算法(二)——冒泡排序法
- 设计模式-工厂方法模式
- UGUI内核大探究(十一)ScrollRect与ScrollBar
- HDU 5878 I Count Two Three (暴力) 2016 ACM/ICPC Asia Regional Qingdao Online
- MATLAB小记- polybool与polyarea
- 信息技术从业者的事业、实践、金句代表
- 链表中倒数第k个结点
- Elasticsearch(6)实践二-检索一个文档
- [笔记-unity]菜鸟学unity
- 三角定律