列出几种软件开发中常见的设计模式并解释
设计模式主要分三个类型:创建型、结构型和行为型。
其中创建型有:
一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点
二、Abstract
Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。
三、Factory
Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory
Method使一个类的实例化延迟到了子类。
四、Builder,建造模式:将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示。
五、Prototype,原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。
行为型有:
六、Iterator,迭代器模式:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。
七、Observer,观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新。
八、Template
Method,模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法得某些特定步骤。
九、Command,命令模式:将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队和记录请求日志,以及支持可撤销的操作。
十、State,状态模式:允许对象在其内部状态改变时改变他的行为。对象看起来似乎改变了他的类。
十一、Strategy,策略模式:定义一系列的算法,把他们一个个封装起来,并使他们可以互相替换,本模式使得算法可以独立于使用它们的客户。
十二、China
Responsibility,职责链模式:使多个对象都有机会处理请求,从而避免请求的送发者和接收者之间的耦合关系
十三、Mediator,中介者模式:用一个中介对象封装一些列的对象交互。
十四、Visitor,访问者模式:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这个元素的新操作。
十五、Interpreter,解释器模式:给定一个语言,定义他的文法的一个表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
十六、Memento,备忘录模式:在
java中常用到得设计模式有哪几种?
Java中的23种设计模式:
Factory(工厂模式),Builder(建造模式),Factory
Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式),Facade(门面模式),Adapter(适配器模式),Bridge(桥梁模式),
Composite(合成模式),Decorator(装饰模式),
Flyweight(享元模式),
Proxy(代理模式),Command(命令模式),
Interpreter(解释器模式),
Visitor(访问者模式),Iterator(迭代子模式),
Mediator(调停者模式),
Memento(备忘录模式),Observer(观察者模式),
State(状态模式),
Strategy(策略模式),Template
Method(模板方法模式),
Chain
Responsibleity(责任链模式)
工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。
开发中用到哪些设计模式 用在什么场合
每个设计模式都有其使用场景的,这些是这些模式的一个基本要素,建议你看看《漫谈设计模式》这本书籍。
很多人以为模式和系统和所做的业务,功能有关系的,这些完全非常错误,模式的粒度比这些要小好多的。
每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,
你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了mvc的设计模式。用来开发
jsp/servlet或者j2ee的相关应用。简单工厂模式等。
请说出几种软件开发时的设计模式(面试题)
比如说DAO,还有什么?
完全听不懂你们在说什么。。。
抽象工厂模式
代理模式之动态代理
单态模式和简单工厂模式
工厂方法模式
抽象工厂模式
模式又称概念模式或逻辑模式,对应于概念级。它是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图)。它是由数据库管理系统提供的数据模式描述语言(data
description
language,ddl)来描述、定义的,体现、反映了数据库系统的整体观。
2。外模式
外模式又称子模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。用户可以通过外模式描述语言来描述、定义对应于用户的数据记录(外模式),也可以利用数据操纵语言(data
manipulation
uage,dml)对这些数据记录进行。外模式反映了数据库的用户观。
3。内模式
内模式又称存储模式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式翱物理结构,对应着实际存储在外存储介质上的数据库。内模式由内模式描述语言来描述、定义,它是数据库的存储观。
在一个数据库系统中,只有唯一的数据库,
因而作为定义
�描述数据库存储结构的内模式和定义、描述数据库逻辑结构的模式,也是惟一的,但建立在数据库系统之上的应用则是非常广泛、多样的,所以对应的外模式不是惟一的,也不可能是惟一的。
叫做三级模式,不叫几种模式吧?
mvc嘛,各人觉得最好理解的
简述一下java有哪些常用设计模式,描述一下怎样用?
问题太大了,这够写一本书了。
描述一下你遇到的问题,然后再判断该问题适用于什么设计模式,这样会不会好一点。
如果不行,那么推荐你去看书吧,23种设计模式。
PS:设计模式是不分语言的,不存在JAVA常用的设计模式,或是C#常用的设计模式这种说法。
那么能不能提供2-3种比较常见的设计模式的讲解、能大致概括一下就行。
其实在项目过程中,所有的设计模式都会被使用到。我个人感觉没有哪种模式是常见的或是不常见的,通常也没有单独使用某种设计模式的,都是几种模式结合起来使用。
2-3种太麻烦了,就说一个单例模式的例子吧。
假设你做了一个swing程序,这里面有一个输入窗口。其定义可能象下面这样
public
MyFrame
extends
JFrame{
private
JTextField
JTextField(20);
private
JButton
JButton("关闭");
public
MyFrame(){
this。add(
btn。addActionListener(
ActionListener(){
public
actionPerformed(
ActionEvent
setVisible(
false
这个窗体可能从多个位置被调用,比如下面是按钮A和B中显示窗体的代码。
字数居然超了。你追问一下吧。
MyFrame
MyFrame();
win1。setVisible(
MyFrame
MyFrame();
win2。setVisible(
);这里面有一个问题,在按钮A和B中,生成的都是窗体的新的实例,换句话说,在win1中对窗体所做的修改(比如更改了文本框的值),在win2中是无法显示出来的。这并不符合有些项目中的用户要求。
解决这个问题可以采用单例模式,即让按钮A和按钮B都使用同一个窗体实例。
字数不够了,你追问一下吧
解决上面的问题有一个基本思路。即用一个静态变量来代表指向窗体的指针,每次有程序员想要new这个窗体时,就看一下静态变量是不是null,如果不是则直接将静态变量的值返回,就可以保证所有程序员使用的都是同一个窗体了。
class
web设计模式是什么?有哪些设计模式?
web设计模式是什么?有哪些设计模式?
Web常用设计工具及特点分析?
http://baike。baidu。com/view/50036。html
java开发模式有哪些?
建议参考:Java设计模式
Java设计模式
一:创建型模式
工厂方法,抽象工厂,建造者模式,单态模式,原型模式
二:构造型模式
适配器模式,桥接模式,组合模式,装饰模式,外观模式
享元模式,代理模式
三:行为型模式
责任链模式,命令模式,解释器模式,迭代器模式,中介者模式
备忘录模式,观察者模式,状态模式,策略模式,模版方法,访问模式
第一种:mvc开发模式。
第二种:ssh开发模式(即:
struts2。0
spring2。0
hibernate3。2
及以上框架版本整合程序开发)
第三种:ssi开发模式(即:
struts2。0
spring2。0
ibatis2。3
及以上框架版本整合程序开发)
一般都是迭代式开发,把整个项目分解成一个个小项目
还有瀑布式,但是过时了
我不知道开发模式,我知道一些设计模式呵呵,什么策略设计模式啊,观察者模式啊,装饰者模式什么的。我是新手呵呵
java中pattern是什么意思?
中pattern为正则表达式的编译表示形式。指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建
Matcher
对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。例子如下:
Pattern
Pattern。compile("a*b");
Matcher
p。matcher("aaaaab");
boolean
m。matches();
在仅使用一次正则表达式时,可以方便地通过此类定义
matches
方法。此方法编译表达式并在单个调用中将输入序列与其匹配。语句
boolean
Pattern。matches("a*b",
"aaaaab");
正则表达式的编译表示形式。
pattern代表模式,看你要问什么了
从基础上说,Pattern是java正则表达式的入口,基本上正则表达式都需要走Pattern类2、
从架构上说,pattern表示的是一种设计模式(design
pattern),学习设计模式是一个菜鸟程序员到正式程序员必经的一步,设计模式的种类很多,也很有意思,比如广播模式,工厂模式,迭代器,适配器等都是比较常见的设计模式
(?<=)在这是连在一起的
在这里匹配的就是后面的。*的内容
(点)表示的是任何字符
*表示的是零次一次或多次
(?=)匹配的就是前面的。*
整个意思就是输出之间的内容
private
boolean
isPhoneNumberValid(String
phoneNumber)
Auto-generated
method
boolean
isValid
false;
String
expression
d{3}d{3}d{5});
String
expression2
d{3}d{4}d{4});
CharSequence
inputstr
phoneNumber;
Pattern
pattern
Pattern。compile(expression);
Matcher
matcher
pattern。matcher(inputstr);
Pattern
pattern2
Pattern。compile(expressi
组合和聚合分别是什么? - 专题开发/技术/项目 / 设计模式
聚合:指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。
组合:也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。
聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。
我们用浅显的例子来说明聚合和组合的区别。“国破家亡”,国灭了,家自然也没有了,“国”和“家”显然也是组合关系。而相反的,计算机和它的外设之间就是聚合关系,因为它们之间的关系相对松散,计算机没了,外设还可以独立存在,还可以接在别的计算机上。在聚合关系中,部分可以独立于聚合而存在,部分的所有权也可以由几个聚合来共享,比如打印机就可以在办公室内被广大同事共用
关联和聚合的区别主要在语义上,关联的两个对象之间一般是平等的,例如你是我的朋友,聚合则一般不是平等的,例如一个公司包含了很多员工,其实现上是差不多的。聚合和组合的区别则在语义和实现上都有差别,组合的两个对象之间其生命期有很大的关联,被组合的对象是在组合对象创建的同时或者创建之后创建,在组合对象销毁之前销毁。一般来说被组合对象不能脱离组合对象独立存在,而且也只能属于一个组合对象,例如一个文档的版本,必须依赖于文档的存在,也只能属于一个文档。聚合则不一样,被聚合的对象可以属于多个聚合对象,例如一个员工可能可以属于多个公司。
我想举个通俗的例子。
怎样才能理解好编程的设计模式?
看设计模式是需要前提条件的,那就是你做了足够的项目。
如果你没做多少项目,那么你看设计模式也就是浪费时间。
等了做了一定的项目后,再结合项目的开发来看设计模式,然后从中找出自己项目设计的缺陷并修改,那样才有意义。