工厂类

java 23种设计模式

可紊 提交于 2020-03-18 11:43:43
设计模式(Design Patterns) ——可复用面向对象软件的基础 设 计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代 码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用 设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决 方案,这也是它能被广泛应用的原因。本章系 Java之美[从菜鸟到高手演变]系列 之设计模式,我们会以理论与实践相结合的方式来进行本章的学习,希望广大程序爱好者,学好设计模式,做一个优秀的软件工程师! 在阅读过程中有任何问题,请及时联系:egg。 邮箱:xtfggef@gmail.com 微博: http://weibo.com/xtfggef 如有转载,请说明出处: http://blog.csdn.net/zhangerqing 企业级项目实战(带源码)地址 : http://zz563143188.iteye.com/blog/1825168 23种模式java实现源码 收集五年的开发资料下载地址 : http://pan.baidu

简单工厂模式概述

試著忘記壹切 提交于 2020-03-17 14:55:50
简单工厂模式概述 工厂方法的功能 1.根据应用环境和其他的因素,在层次类中选择一个类 2.创建所选择类的对象 3.返回给调用者所创建的对象(该对象的类型应该是层次类的超类类型即父类)​ 工厂方法的优点 1.使客户程序清晰:应用对象可以使用工厂方法访问合适类的对象,应用对象就不需要处理类的选择标准问题。 2.隐藏了创建对象的细节:因为不同的子类的对象需要以不同的方式创建,工厂方法将根据环境、客户选择而把创建对象的繁琐细节封装了起来。 3.可以不需要知道哪个具体类的对象被创建了:因为工厂方法返回给客户类的对象的类型为层次类的超类类型,所以客户类不需要知道哪个具体的子类的对象被创建了。 模式中的组件 Creator(工厂类): 1.简单工厂方法模式的核心 2.包含应用所需要的业务逻辑 3.工厂方法创建一个product类型的对象 Product组件: 1.JAVA接口或者抽象类 2.具体子类的共同接口 ConcreateProduct组件: 1.具体的JAVA类,实现其接口Product或者继承了Product 注释:parameter(参数) ​例1:汽车保险条款 利用简单工厂方法模式进行设计​,用于查询不同类型的汽车保险条款。 注释: 1.根据String Option参数的不同值,然后选择不同的保险 2.PolicyProducer属于工厂类 注释

02-工厂模式

此生再无相见时 提交于 2020-03-17 01:22:46
工厂模式 1、简单工厂模式 简单工厂模式适用于工厂类负责创建的对象较少的情况,客户端只需要传入工厂类的参数,具体的创建细节客户端不需要关心,由工厂类具体实现。 由一个工厂对象决定创建出哪一种产品类的实例,属于创建型模式。 减少代码的冗余程度 看代码 定义顶层工厂接口,提供一个所有产品都要实现的方法 public interface ICourse { void record ( ) ; } 定义两种课程,java或者python public class JavaCourse implements ICourse { public void record ( ) { System . out . println ( "录制Java课程" ) ; } } public class PythonCourse implements ICourse { public void record ( ) { System . out . println ( "录制Python课程" ) ; } } 创建一个工厂类根据参数创建对应的对象 public class CourseFactory { public ICourse create ( Class < ? extends ICourse > clazz ) { try { if ( null != clazz ) { return clazz

java design pattern

流过昼夜 提交于 2020-03-14 16:24:08
工厂模式(factory) 简单工厂模式的概念   就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 简单工厂模式的UML图    优点:工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个 软件体系结构 的优化。 缺点:由于工厂类集中了所有实例的创建逻辑,违反了 高内聚 责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求.这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利; 单例模式(singletor) 单例模式(Singleton Pattern)是一个比较简单的模式,其原始定义如下:Ensure a class has only one instance, and provide a global point of

23种设计模式

不打扰是莪最后的温柔 提交于 2020-03-14 11:07:09
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。本章系 Java之美[从菜鸟到高手演变]系列 之设计模式,我们会以理论与实践相结合的方式来进行本章的学习,希望广大程序爱好者,学好设计模式,做一个优秀的软件工程师! 企业级项目实战(带源码)地址 : http://zz563143188.iteye.com/blog/1825168 23种模式java实现源码下载地址 http://pan.baidu.com/share/link?shareid=372668&uk=4076915866#dir/path=%2F%E5%AD%A6%E4%B9%A0%E6%96%87%E4%BB%B6 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式

创建型模式之抽象工厂模式

喜你入骨 提交于 2020-03-12 20:43:22
重要程度:5星 3.1. 模式动机 在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时候我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象。 为了更清晰地理解工厂方法模式,需要先引入两个概念: 产品等级结构 :产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌的电视机是其子类。 产品族 :在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品,如海尔电器工厂生产的海尔电视机、海尔电冰箱,海尔电视机位于电视机产品等级结构中,海尔电冰箱位于电冰箱产品等级结构中。 当系统所提供的工厂所需生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构中属于不同类型的具体产品时需要使用抽象工厂模式。 抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形态。 抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构,一个工厂等级结构可以负责多个不同产品等级结构中的产品对象的创建

python设计模式

懵懂的女人 提交于 2020-03-10 19:43:38
转载自品略图书馆: http://www.pinlue.com/article/2020/03/1009/2210006503225.html 1.创建型模式 单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息。如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样 2.当你想要创建一个可扩展的关联在创建类与支持创建对象的类之间。 一个例子更能很好的理解以上的内容: 我们有一个基类Person ,包涵获取名字,性别的方法 。有两个子类male 和female,可以打招呼。还有一个工厂类。 工厂类有一个方法名getPerson有两个输入参数,名字和 会严重浪费内存资源,尤其是在配置文件内容很多的情况下。事实上,类似 AppConfig 这样的类,我们希望在程序运行期间只存在一个实例对象 class Singleton(object): def __init__(self): pass def __new__

工厂模式

ぐ巨炮叔叔 提交于 2020-03-09 02:43:35
一、工厂模式的由来 二、简单工厂模式 例子:创建一个ICourse课程接口: 创建一个JavaCourse实现类: 创建一个PythonCourse实现类: 创建一个CourseFactory类,用来生成JavaCourse或PythonCourse对象: 创建一个SimpleFactoryTest测试类,来看客户端调用: 类关系结构图: 1、简单工厂模式(Simple Factory Pattern):指由一个工厂对象决定创建出哪一种产品类的实例。(属于创建型模式,但它不属于GOF(四位作者)的23种设计模式之一) 2、目的:减少代码冗余程度,提高代码的复用性。 3、适用场景 工厂类负责创建的对象较少 客户端只需要传入工厂类的参数,对于如何创建对象的逻辑不需要关心 4、优点:只需传入一个正确的参数,就可以获取你所需要的对象,无需知道其创建的细节。 5、缺点 工厂类的职责相对过重,增加新的产品时,如果产品存在差异化的逻辑,则需要修改工厂类的判断逻辑,违背开闭原则 不易于扩展过于复杂的产品结构 三、工厂方法模式 (简单工厂模式的升级版) 例子:创建一个ICourseFactory接口,也可以是抽象类(超级工厂): 创建一个JavaCourseFactory工厂实现类,用来生成JavaCourse对象: 创建一个JavaCourseFactory工厂实现类

简单工厂模式

亡梦爱人 提交于 2020-03-08 05:38:44
模拟一个简单的需求 设计一个简单的计算器,能够完成加减乘除的操作,并且能够设置运算的两个操作数(暂时不考虑计算器的界面)。 分析 思路1 可以创建一个计算器类,里面包含加减乘除的运算,以及设置获取操作数等操作,客户端直接创建一个计算器的对象,调用对应接口去执行运算。如果后续要添加新的运算,每次需要更改计算器类。 风险:由于新增操作每次要更改原来设计的类,可能会由于不小心改掉了原来的实现计算逻辑,从而导致原来正常运行的程序得不到正确的结果。 思路2 为每种运算单独设计一个类,客户端使用的时候可以根据不同的运算创建不同的对象,执行相应的操作。 由于每种运算符都有类似的操作,只是最终对数据执行的运算不一样,为了避免每个运算类写重复的代码,可以抽象出来一个运算类,包含公共的方法(设置操作数,获取操作数,获取计算结果等),具体运算类应该继承这个基类,在每个子类分别执行自己的运算。 此时,客户端需要使用运算器的时候,创建对象使用new的时候还是需要知道每个运算类的类名,若这些类分别在不同的头文件声明,使用这些类的时候还需要include一堆的头文件。如果要新增加运算符,上述的地方都要改动,很容易遗漏,非常的繁琐。 解决方案:由于创建的对象都是类似的对象(他们的父类都是同一个),可以创建一个类,提供一个静态方法,把创建具体类对象的工作都放到这个类中来完成,当客户端需要使用运算器的时候

23种设计模式

删除回忆录丶 提交于 2020-03-08 04:28:39
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。本章系 Java之美[从菜鸟到高手演变]系列 之设计模式,我们会以理论与实践相结合的方式来进行本章的学习,希望广大程序爱好者,学好设计模式,做一个优秀的软件工程师! 企业级项目实战(带源码)地址 : http://zz563143188.iteye.com/blog/1825168 23种模式java实现源码下载地址 http://pan.baidu.com/share/link?shareid=372668&uk=4076915866#dir/path=%2F%E5%AD%A6%E4%B9%A0%E6%96%87%E4%BB%B6 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式