java的设计模式大体上分为三大类:
•创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。
•结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。
•行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
此外,还有两类:并发型模式和线程池模式。
工厂模式:工厂模式是Java常用的设计模式之一,该设计模式属于创建型于创建型模式,它提供了一种创建对象的最佳方式。工厂模式主要是为创建对象提供过渡接口,无需给客户端暴露创建逻辑,将创建对象的具体过程封装隐蔽起来,达到设计上的灵活性。工厂模式可以分为三类:(1)简单工厂模式(Simple Factory)(2)工厂方法模式(Factory Method)(3)抽象工厂模式(Abstract Factory)简单工厂模式:简单工厂模式又称静态工厂方法模式,将实现的业务的细节放到工厂类中,客户端只需传入工厂类的参数即可
组成部分: (1)工厂类:核心类,包含业务的逻辑,用于创建产品(2)抽象产品:一般是具体产品继承的父类或者实现的接口(3)具体产品:工厂类创建的对象即为该类的实例
下面我们看一下具体的例子:
package FactoryMode.Simple_Factory;public class Circle implements Shape{@Overridepublic void draw() {System.out.println("I can draw a circle.");}
}
package FactoryMode.Simple_Factory;public class Rectangle implements Shape {@Overridepublic void draw() {System.out.println("I can draw a rectangle.");}
}
package FactoryMode.Simple_Factory;public class Square implements Shape {@Overridepublic void draw() {System.out.println("I can draw a square.");}
}
package FactoryMode.Simple_Factory;public interface Shape {public void draw();
}
package FactoryMode.Simple_Factory;public class ShapeFactory {public Shape getShape(String shapeType){if ("circle".equals(shapeType)){return new Circle();}else if ("rectangle".equals(shapeType)){return new Rectangle();}else if ("square".equals(shapeType)){return new Square();}else {return null;}}
}
package FactoryMode.Simple_Factory;public class ShapeTest {public static void main(String[] args){ShapeFactory sf = new ShapeFactory();sf.getShape("circle").draw();sf.getShape("rectangle").draw();sf.getShape("square").draw();}
}
结果是:
I can draw a circle.
I can draw a rectangle.
I can draw a square.
很显然,当我们需要增加新的图形时,工厂类限制了我们的扩展,增加了类之间的耦合度,需要我们手动修改工厂类。因此简单工厂模式只适合在创建对象较少、
简单情况下使用。
工厂方法模式:定义一个创建对象的工厂接口,让子类决定实例化哪一个类,并将实际创建工作推迟到子类当中。
组成部分:(1)抽象工厂:该模式的核心部分,给客户端调用的一个接口,是具体工厂必须实现的接口或者继承的父类(2)具体工厂:具体业务逻辑的实现,可创建具体产品的实例对象(3)抽象产品:具体产品必须实现的接口或者继承的父类(4)具体产品:具体工程创建的对象是此类的实例
具体实例:
package FactoryMode.Factory_Method;public interface Shape {public void draw();
}
package FactoryMode.Factory_Method;import FactoryMode.Simple_Factory.Shape;public class Circle implements Shape {@Overridepublic void draw() {System.out.println("I can draw a circle.");}
}
package FactoryMode.Factory_Method;import FactoryMode.Simple_Factory.Shape;public class Rectangle implements Shape {@Overridepublic void draw() {System.out.println("I can draw a rectangle.");}
}
package FactoryMode.Factory_Method;import FactoryMode.Simple_Factory.Shape;public interface ShapeFactory {public Shape getShape();
}
package FactoryMode.Factory_Method;import FactoryMode.Simple_Factory.Shape;public class CircleFactory implements ShapeFactory {@Overridepublic Shape getShape() {return new Circle();}
}
package FactoryMode.Factory_Method;import FactoryMode.Simple_Factory.Shape;public class RectangleFactory implements ShapeFactory {@Overridepublic Shape getShape() {return new Rectangle();}
}
package FactoryMode.Factory_Method;public class FactoryTest {public static void main(String[] args){ShapeFactory cf = new CircleFactory();cf.getShape().draw();ShapeFactory rf = new RectangleFactory();rf.getShape().draw();}
}
结果是:
I can draw a circle.
I can draw a rectangle.
工厂方法模式通过多个实现抽象工厂的具体工厂,为简单工厂模式的工厂类分担了压力,当有新的Shape产生时,只需创建一个
具体工厂类和具体产品类,无需修改原有的代码,复合六大原则的开闭原则。
以上就是简单工厂模式和工厂方法模式,抽象工厂模式将放到下一小节。

Java设计模式(一) -- 工厂方法模式相关推荐

  1. 一文叫你弄懂Java设计模式之工厂方法模式:图解+日志记录器代码实例

    文章目录 详解Java设计模式之工厂方法模式 案例引入工厂方法模式 工厂方法模式 定义 案例分析 UML类图分析 代码分析 工厂方法的重载 工厂方法的隐藏 模式优点 模式缺点 模式适用环境 详解Jav ...

  2. Java设计模式之工厂方法模式与抽象工厂模式

    2019独角兽企业重金招聘Python工程师标准>>> 一.前期回顾 上一篇<Java设计模式之单例模式>详细介绍了单例模式,介绍了单例模式的使用场景,优缺点,同时也写了 ...

  3. Java 设计模式之工厂方法模式

    本文为笔者学习<Head First设计模式>的笔记,并加入笔者自己的理解和归纳总结 工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个.工厂方法让类把实例化推迟到子类 ...

  4. Java设计模式 之 工厂方法模式

    1. 使用设计模式的好处:可提高代码的重复性,让代码更容易被他人理解,保证代码的可靠性. 2. 工厂模式定义:就是创建一个工厂类来创建你需要的类,工厂模式包括工厂模式和抽象工厂模式,抽象工厂模式是工厂 ...

  5. java设计模式之工厂方法模式

    工厂方法模式是类的创建模式,又叫虚拟构造模式(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式. 工厂方法模式的用意是定义一个创建产品的工厂接口, ...

  6. 最简单java设计模式:工厂方法模式

    前言 在前一篇文章讲解了一下简单工厂模式,在上篇文章中,我们也讲到了简单工厂模式的缺点,就是不满足开闭原则,这对于软件的设计来说,是不太好的,而下面讲解的工厂方法模式,正是为了弥补简单工厂模式的缺点, ...

  7. java设计模式通俗_通俗易懂的Java设计模式之工厂方法模式

    一 .工厂方法(Factory Method)模式 工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负 ...

  8. java设计模式1——工厂方法模式(Factory Method)

    工厂方法模式分为三种: 1.普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建.首先看下关系图: 举例如下:(我们举一个发送邮件和短信的例子) 首先,创建二者的共同接口: pub ...

  9. 二、java设计模式之工厂方法+抽象工厂模式(创建型设计模式)

    创建型设计模式-工厂模式和应用 工厂模式介绍: 它提供了一种创建对象的最佳方式,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象 例子: 需要购买一辆车,不用管 ...

  10. 设计模式:工厂方法模式(Factory method)

    设计模式:工厂方法模式(Factory method) 一.问题 在前一章中通过披萨的实例介绍了简单工厂模式.在披萨实例中,如果我想根据地域的不同生产出不同口味的披萨,如纽约口味披萨,芝加哥口味披萨. ...

最新文章

  1. TCP/IP常见英文缩写释义
  2. bookstrap 怎么用ajax,bootstrap里怎么用ajax请求数据到table里
  3. code blocks代码性能分析_记一次Python Web接口优化,性能提升25倍!
  4. .NET-记一次架构优化实战与方案-前端优化
  5. Arctext.js - 基于 CSS3 jQuery 的文本弯曲效果
  6. 摩拜单车又涨价了!真的要骑不起了
  7. Spring : ConfigurableListableBeanFactory
  8. 漫步者蓝牙只有一边有声音_2019年上半年最具“诚意”的真无线劲挂蓝牙耳机新品...
  9. macOS Big Sur在APFS格式的驱动器上支持Time Machine有几个问题?
  10. Fiddler(FD)抓包工具汉化版及使用方法
  11. Python+tkinter模拟京东登录时拖动图片式验证码
  12. 软件测试 _ 基础知识
  13. js月份的计算公式_js判断某年某月有多少天(闰年计算方法)
  14. MediaWiki配置
  15. 蒙城县有4000多年,夏为禹贡豫州之域
  16. html中form表单标签的使用
  17. Quick BI和Power BI实测比对
  18. 头条的动态页面爬取+百度下拉搜索框
  19. 微信小程序版 九宫格数独游戏
  20. 优麒麟 20.04 LTS Pro 发布 - 以初心,铸匠心

热门文章

  1. Leetcode每日必刷题库第1题,如何实现两数之和?
  2. Flink从入门到精通100篇(十七)-Spark/Flink广播如何实现作业配置动态更新?
  3. TensorFlow实现人脸检测和人脸识别
  4. 特征选择常用算法综述
  5. 海量数据处理之Bloom Filter详解
  6. Python入门100题 | 第068题
  7. 如何来玩MNIST数据集?
  8. java中最容易犯错的特殊字符
  9. python数据挖掘入门与实战代码
  10. Spring Security Architecture--官方