Java设计模式:1设计模式说明

设计模式是什么

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编码的、代码设计经验的总结。使用设计模式是为了可重复用代码、让代码更容易被他人理解、保证代码可靠性。设计模式是代码编制真正工程化。

总体上,设计模式分为3大类总共23种:

1.创建型模式(5种)

工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式

2.结构型模式(7种)

适配器模式、装饰器模式、外观模式、桥接模式、组合模式、享元模式、代理模式。

结构型模式可以分为类结构型模式和对象结构型模式(大部分结构型模式是对象结构型模式)。

3.行为型模式(11种)

策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

此外还有两类,并发型模式和线程池模式,暂不做说明。

设计模式六大原则

1.开闭原则OCP

该原则的核心是软件实体应该是可扩展的,同时保持已有功能不变。这就意味着在软件的生命周期中,可以通过扩展已有的代码来实现变化,而不是修改现有的代码。

2.里氏替换原则LSP

该原则要求子类在扩展父类的功能的同时,不能改变父类的原有功能。这有助于增强程序的健壮性和可维护性。

3.依赖倒置原则DIP

该原则提倡高层模块不应该依赖底层模块,两者都应该依赖其抽象。这样,依赖关系应该建立在最小的接口上,从而降低类与类之间的耦合。

4.接口隔离原则ISP

该原则建议客户端不应该依赖它不需要的接口,类之间的依赖关系应该建立在最小的接口上。这样可以提高系统的灵活性和可维护性。

5.迪米特法则LoD

该原则建议一个对象应该对其他对象保持最少的了解,以降低类与类之间的耦合。

6.单一职责原则SPR

该原则强调一个类或方法应该只负责一项职责,以减少类的复杂性和提高内聚性,从而提高系统的可维护性和可读性。

设计中的三个关键字

1.抽象化

在众多事务中提取共同的、本质性的特征,舍弃非本质的特征,就是抽象化。抽象化的过程也是一个剪裁的过程,在抽象时,同于不同,取决于从什么角度来抽象。抽象的角度取决于分析问题的目的。

2.实现化

抽象类给出的具体实现,就是实现化。一个类的实例就是这个类的实例化,一个具体子类是它的抽象超类的实例化(可由子类来具体进行实现)。

3.解耦

耦合就是两个实体的行为的某种强关联。而将它们之间的强关联去掉,就是解耦。解耦指将抽象化和实现化之间的耦合解开,或者说是将它们之间的强关联改换成弱关联。

所谓强关联指的是在编译时期已经确定的,无法在运行时期动态时期改变的关联;所谓弱关联,就是可以动态地确定并且在运行时期动态改变的关联。从这个定义看,继承关系是强关联,聚合关系是弱关联。

MVC设计模式

MVC设计模式不属于23种设计模式之一,这种也是比较常见、比较重要的。

MVC(Model View Controller)是模型(Model)-视图(View)-控制器(Controller)一种软件设计典范。MVC用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面以及用户交互的同时,不需要重新编写业务逻辑。

MVC设计模式同时也提供了对HTML、CSS、JS的完全控制。

1.模型Model

模型标识企业数据和业务规则,在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,也就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

2.视图View

视图是用户看到并与之交互的界面。对老式的Web应用程序而言,视图就是HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演重要的角色,但是新的技术也有很多,包括XHTML、XML/XSL、WML等一些标识语言和Web Service。

3.控制器Controller

控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单机Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理,它只是接收请求并决定调用哪个模型构件去处理请求,然后在确定用哪个视图来显示返回的数据。

使用MVC分层模型有助于管理复杂的应用程序,因为开发者在一个时间内可以专门关注某一个方面。例如,开发者可以在不依赖业务逻辑的情况下专注于视图设计,同时也让应用程序的测试更加容易。

使用MVC分层模型也简化了分组开发,不同的开发人员可以同时开发视图、控制器逻辑和业务逻辑。(JSP+servlet+javaBean)

小结

问题:为什么MVC设计模式不属于23种设计模式之一

1.设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更加抽象;框架可以用代码表示,也能直接只进行或复用,而对设计模式而言只有实例才能用代码表示,设计模式是比框架更小的元素。一个框架中往往含有一个或者多个设计模式,框架总是针对某一特定应用领域,但同一设计模式却可以适用于各种应用。框架是软件,设计模式是软件的知识;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。从这个角度讲,MVC应属于一种框架,而不是一种设计模式。

2.MVC其实是由其它三个设计模式的演变:观察者模式+策略模式+组合模式,根据MVC在框架中不同的实现可能还会用到工厂模式和装饰器模式。比如说,model是应用的数据,view处理屏幕上展现给用户的内容,为此,MVC在核心通讯上基于推送/订阅模型,当一个model变化时它对应用其他模块发出更新通知,订阅者--通常是一个Controller然后更新对应的view,这种自然的观察关系促进了多个view关联到同一个model。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值