设计模式-工厂模式(学习)

在程序的世界里,就像射雕英雄传一样,我们的技能就像是武功一样,我们只有不断去学习练习才能有机会像郭靖一样成为“天下第一”。

我认为技能和武功是很类似的,也有外功和内功,武侠之内功好比是我们技能算法;武侠的外功好比是我们技能中某一语言的语法;武功秘籍好比是我们每种语言都有API和文档;武侠的勤加练习好比我们的每天学习,练习,使用这些语言。如何去快速,高效的使用它们,就需要有好的方法练习使用,好比黄蓉有好的方法,郭靖没有好的方法,只能勤学苦练;设计模式可以说是一种好的方法,也可以说是高效运用我们技能知识的方法。总而言之方法很重要。--我的总结

今天我特意复习一下设计模式。-- 工厂模式

package com.itdong.patterns.FactoryPattern;
// 定义一个包含有绘图的接口
public interface Shape {void draw();
}

定义三个具体的实体类

package com.itdong.patterns.FactoryPattern;
// 圆形
public class Circle implements Shape {@Overridepublic void draw() {// TODO Auto-generated method stubSystem.out.println("Inside Circle::draw() method.");}}
package com.itdong.patterns.FactoryPattern;
// 矩形
public class Rectangle implements Shape{@Overridepublic void draw() {// TODO Auto-generated method stubSystem.out.println("Inside Rectangle::draw() method.");}}
package com.itdong.patterns.FactoryPattern;
// 方形
public class Square implements Shape {@Overridepublic void draw() {// TODO Auto-generated method stubSystem.out.println("Inside Square::draw() method.");}}

创建工厂,生成基于给定信息的实体类对象

package com.itdong.patterns.FactoryPattern;public class ShapeFactory {// 使用 getShap 方法获取形状类型的对象public Shape getShape(String shapeType){if(shapeType == null){return null;}if(shapeType.equalsIgnoreCase("CIRCLE")){return new Circle();}else if(shapeType.equalsIgnoreCase("RECTANGLE")){return new Rectangle();}else if(shapeType.equalsIgnoreCase("SQUARE")){return new Square();}return null;}}

使用工厂,传递类型信息获取实体类对象

package com.itdong.patterns.FactoryPattern;public class FactoryPattern {// 意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂,创建过程延迟到子类// 解决:接口选择问题// 使用:不同条件下创建不同的实例// 优点:一个调用者想创建一个对象,只需要知道名称就可以了;扩展性高,增加一个产品,只要扩展一个工厂类就可以,屏蔽产品具体实现,调用者只关心产品接口// 缺点:每增加一个产品,都需要增加一个具体类和对象实现工厂,系统类成倍增长,一定程度增加复杂度,同时增加系统具体类依赖public static void main(String[] args) {// TODO Auto-generated method stubShapeFactory shapeFactory = new ShapeFactory();// 获取Circle对象,调用其draw方法;Shape shape1 = shapeFactory.getShape("circle");shape1.draw();// 获取Circle对象,调用其draw方法;Shape shape2 = shapeFactory.getShape("rectangle");shape2.draw();// 获取Circle对象,调用其draw方法;Shape shape3 = shapeFactory.getShape("square");shape3.draw();}}

设计模式-工厂模式(学习)相关推荐

  1. 设计模式-工厂模式学习(初级)

    个人不善于表达 思路见于代码 [欢迎大神拍砖批评指点] using System; using System.Collections.Generic; using System.Linq; using ...

  2. java设计模式工厂模式_Java中的工厂设计模式

    java设计模式工厂模式 Welcome to the Factory Design Pattern in Java tutorial. Factory Pattern is one of the C ...

  3. Python 设计模式 - 工厂模式

    精通Python设计模式第二版 第 1 章 工厂模式 学习笔记 工厂模式 工厂模式的思想意在简化对象的创建过程.调用者(客户端)不清楚对象的来源以及生成对象的方式,调用者只需要调用某个方法或者实例某个 ...

  4. Java设计模式-工厂模式(3)抽象工厂模式

    在Java设计模式-工厂模式(2)工厂方法模式 我们知道了工厂方法模式解决了简单工厂模式中的缺陷,做到了满足开闭原则,但是时代是进步的,进而又产生新的问题,工厂难道只能生产一种东西吗.我们所见到的工厂 ...

  5. Java设计模式-工厂模式(2)工厂方法模式

    在Java设计模式-工厂模式(1)简单工厂模式 中我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而"工厂方法模式"是对简单工厂模式的进一步抽象化,其好处是可以使系统在不 ...

  6. Java设计模式-工厂模式(1)简单工厂模式

    Java设计模式-工厂模式(1)简单工厂模式 一.前言 1)例子 2)类图关系 3)代码实现 二.简单工厂模式 2.1.概述: 2.2.类图关系: 2.3.代码修改: 2.4.优缺点 2.5.扩展-简 ...

  7. 设计模式---工厂模式

    设计模式---工厂模式 工厂方法模式 概述:工厂方法模式中抽象工厂负责定义创建对象的接口,具体创建工作由继承抽象工厂的具体类实现. 优点:客户端不需要再负责对象的创建,从而明确了各个类的职责,如果有新 ...

  8. java设计模式工厂模式_Java中的复合设计模式

    java设计模式工厂模式 Composite pattern is one of the Structural design pattern. Composite design pattern is ...

  9. java设计模式工厂模式_Java中的桥梁设计模式

    java设计模式工厂模式 Today we will look into Bridge Design Pattern in java. When we have interface hierarchi ...

最新文章

  1. [转]使用C#调用金诚信71x系列读卡器的DLL
  2. 新站SEO优化五点注意事项!
  3. Google IO 谈 AI First,我们却发现了更多
  4. python调换字符串顺序_python实现指定字符串交换
  5. 几个支持生成Python代码的UML工具
  6. richTextBoxFontClass
  7. 再介绍一篇Contrastive Self-supervised Learning综述论文
  8. Python版——博客网站九 编写Android版本的移动App
  9. 如何在C#中实现图片缩放
  10. extjs中grid中行内文本或图片居中显示
  11. JavaScript书籍的免费32本-收集分享
  12. 总比特率是什么意思_新基金初始净值低于1是什么意思?什么时候开始有净值?...
  13. sja1000 CAN控制器波特率计算方法详解
  14. Ubuntu20.04 安装wine QQ
  15. cruzer php sandisk 闪迪u盘量产工具_sandisk量产工具(闪迪U盘量产工具) 1.4
  16. 物联网技术应用成商业市场盈利关键
  17. 3g无线图传点到点模式与服务器模式比较,4G网络的几个关键技术指标 - 3G和4G LTE网络架构之间的区别...
  18. 什么是DAOstack
  19. 堆内存(heap)和栈内存(stack)区别
  20. Highcharts去掉右下角URL水印

热门文章

  1. 神策数据:数字化营销助力鞋服企业转型
  2. idea提示“No suitable licenses associated with account balabala”
  3. ngx-datatable
  4. 《爱上单片机》读后感——5年后终于了解什么是单片机
  5. Git团队协作工作流程
  6. rust Vec 常用操作
  7. 北邮 计算机网络实验二
  8. mysql中explain执行结果各个字段的意思
  9. 【昊鼎王五】pip安装pymssql模块时报错“PEP 517”怎么解决?
  10. 拯救rm-rf删库事故