活字印刷引入简单工厂模式
中国的有四大发明:火药、造纸、指南针 、活字印刷。这个地方活字印刷技术促进了人类文化的传播。我们不谈这些。这给我们将设计模式有啥关系?第一,如果我们在排版字中有一个地方错误,我们可以直接将错误的地方进行替换。这个体现了可维护性;第二,我们排版字印刷完成后,我们可以把这些单个的保存好,以便下次的时候可以用,这个体现了可复用性;第三,活字印刷进行排版的时候,我们可以横着 或者竖着,这个体现了灵活性。活字印刷真不愧为四大发明之一。
为什么我们的代码中要引入面向对象的思维和设计模式。我们引入面向对象的封装、继承、多态可以使我们我们的程序降低耦合度(一般我们在设计代码的时候,尽量考虑高内聚、低耦合)。引进设计模式可以是我们的代码变更灵活。不会因客户的需求变化,而改动量很大。
好了,步入主题。什么是简单工厂模式?举个例子:我们的小卖部。我们需要买花生、瓜子、饮料,直接到小卖部就可以了;我们需要什么说出我们需求,而小卖部就给我们什么。至少这个花生、瓜子、饮料 它们又是个单独的类了;这个就是我们的简单工程模式。如果说我们增加需求买玩具,那么小卖部进货玩具;我们就直接到小卖部就可以买到。这就是我们的简单工厂模式。实际在代码中如何应用呢?我们以我们的运算加、减、乗、除为例:
运算类只是个抽象类,用于其他具体的类进行继承使用;我们的具体类(加法类、减法类、乘法类、除法类)当中的GetResult方法实现对应的操作。简单的工程类的CreateOperation方法实际上就是根据我们客户端的需要创建对应的具体类;例如:我传入“+”符合,那么就创建一个加法类的实际对象实例并返回给客户端;当我们需要增加新的具体类(如开根号算法),我们只需要继承抽象类(运算类)并在具体的GetResult方法中,去实现具体的方法就可以了;我们不需要改动原来的代码。呵呵,不知不觉我们用到了设计原则,开放封闭原则(对扩展开发,对修改关闭)。您们看,我们的即使从PC客户端,移动到 PDA 运算本身不会变化,只是界面需要重新开发就可以了,更体现了我们代码的复用性。
活字印刷引入简单工厂模式相关推荐
- 《JAVA与模式》之简单工厂模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂 ...
- 设计模式-简单工厂模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的: 简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工 ...
- JavaScript设计模式--简单工厂模式例子---XHR工厂
JavaScript设计模式--简单工厂模式例子---XHR工厂 第一步,Ajax操作接口(目的是起一个接口检测作用) (1)引入接口文件 //定义一个静态方法来实现接口与实现类的直接检验 //静态方 ...
- 工厂三兄弟之简单工厂模式(二)
2 简单工厂模式概述 简单工厂模式并不属于GoF 23个经典设计模式,但通常将它作为学习其他工厂模式的基础,它的设计思想很简单,其基本流程如下: 首先将需要创建的各种不同对象(例如各种不同的Chart ...
- 简单工厂模式与工厂方法模式
在OO设计领域,我们知道前人总结了不少的经验,许多的经验在现代软件工程过程中已经被认为是原则来遵守.下面笔者摘抄几项下文涉及到的OO原则的定义. OCP(开闭原则,Open-Closed Princi ...
- Java:继承之super关键字,继承之私有权限,继承之方法重写,继承之object类,继承之简单工厂模式
一.继承的概念及用法 继承背后的思想就是 基于已存在的类来构建新类 当从已存在类继承时,就重用了它的方法和属性,还可以添加新的方法和属性来定制新类以应对需求 ...
- 手撕设计模式之「简单工厂模式」(Java描述)
前言 利用简单工厂模式可以实现对象创建和业务逻辑处理的分离,但存在工厂类职责过重,增添新产品违背开闭原则等问题.它不属于GoF 23种设计模式之一,但是它可以作为学习工厂方法模式前的一个很好的引导. ...
- Java设计模式-工厂模式(1)简单工厂模式
Java设计模式-工厂模式(1)简单工厂模式 一.前言 1)例子 2)类图关系 3)代码实现 二.简单工厂模式 2.1.概述: 2.2.类图关系: 2.3.代码修改: 2.4.优缺点 2.5.扩展-简 ...
- 设计模式 简单工厂模式
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂 ...
最新文章
- Integer 和 int的种种比较
- 2022.3.14矮牵牛
- 2015 Multi-University Training Contest 9
- GPT v.s. 中国象棋:写过文章解过题,要不再来下盘棋?
- 数学奥赛用不用计算机,报考自招必看!五大学科竞赛利弊详解,到底哪科最适合你?...
- 实现后台高级查询(基础版)
- 如何用java更改网页图片,java如何修改文档第一页为不同的页面
- Quartus17打开RTL视图
- Delphi 7序列号过期的解决方法
- unix下matlab安装
- 频谱分析仪查看时域波形
- ie11兼容性视图设置_ie11浏览器不兼容的解决办法
- Ubuntu 16.04 安装破解版 matlab 2017b
- 中石油邮箱pop3服务器,手机客户端访问中油邮箱设置
- 苏州企业如何免费办理软件著作权
- wifi连接上不能上网怎么办服务器无响应,连接WIFI却不能上网的解决办法
- 用python实现模拟轮盘抽奖游戏
- 编译出的CHM文档读取页面发生脚本错误
- 文件快速定位神器(C++小项目实战)
- 获取Android_Studio模拟器root权限的方法
热门文章
- Qt 设置Widget背景图片并实现透明度的三种方式
- 2辊张力辊张力计算公式
- 通过Spark Streaming的window操作实战模拟热点搜索词案例实战
- java打桩_使用JUnit4与JMockit进行打桩测试
- Unity Joystick手势操作
- 当效益不好的时候为什么公司选择裁员,而不是降薪
- Zend引擎探索 之 PHP中前置递增不返回左值
- 小米、阿里巴巴、国美、新鸿基、花旗、力拓等公司高管变动
- 学术-物理:莫比乌斯带
- html怎么加深字体颜色,我打印网页的字的颜色非常浅,怎样才能加深? – 手机爱问...