Java 设计模式的浅谈
来源:互联网 发布:淘宝支付不了钱怎么办 编辑:程序博客网 时间:2024/05/18 22:52
软件设计的核心是提高软件的可复用性和可维护性。通常一个软件之所以可复用性和可扩展性差的原因在于设计过于僵硬,过于脆弱,复用率低,粘度过高等原因导致的,这时候需要想办法提高可扩展性,灵活性和可插入性,从而提高软件的可复用性和可维护性。一般可维护性和可复用性不能同时能达到目的,只有遵循一定的设计原则,设计出来的系统才能同时满足可复用性和可维护性。面向对象设计原则主要有如下几条:
1、“开闭”原则(Open-Closed Principle)简称OCP,讲的是一个软件实体应该对扩展开放对修改关闭。
2、里氏代换原则(Liskov Substitution Principle)简称LSP,讲的是任何父类出现的地方都可以被子类代替。
3、依赖倒转原则(Dependency INversion Principle)简称DIP,讲的是要依赖于抽象不要依赖于实现。
4、接口隔离原则(Interface Segregation Principle)简称ISP,讲的是为客户端提供尽可能小的单独的接口,而不是提供大的总接口。
5、组合/聚合服用原则(Composition/Aggregation Principle)简称CARP,讲的是要尽可能使用组合,聚合来达到复用目的而不是利用继承。
6、迪米特法则(Law of Demeter)简称LoD,讲的是一个软件实体应当与尽可能少的其他软件实体发生相互作用。
而设计模式是面向对象设计原则的具体指导,所以有了理论和设计指导我们就可以进入设计模式学习了,设计模式大家常说的有23中,其实现实中要多的多,大概分为三类:创建模式,结构模式和行为模式。
一、创建模式
创建模式是对类的实例化过程的抽象化。在一些系统里,可能需要动态的决定怎样创建对象,创建哪些对象,以及如何组合和表示这些对象。创建模式描述了怎么构造和封装这些动态的决定。
创建模式分为类的创建模式和对象的创建模式两种。
1、类的创建模式 类的创建模式使用继承关系,把类的创建延迟到子类,从而封装了客户端将得到哪些具体类的信息,并且影藏了这些类的实例是如何被创建和放在一起的。
2、对象的创建模式 对象的创建模式描述的是把对象的创建过程动态地委派给另外一个对象,从而动态地决定客户端讲得到哪些具体的类的实例,以及这些类的实例是如何被创建和组合在一起的。
创建模式主要包括:简单工厂模式,工厂方法模式,抽象工厂模式,单例模式,多例模式,建造模式,原始模式。
二、结构模式
结构模式描述如何将类或对象结合在一起形成更大的结构,结构模式也包括类的结构模式和对象的结构模式。
1、类的结构模式 类的结构模式使用继承把类、接口等组合在一起,以形成更大的结构。当一个类从父类继承并实现某接口时,这个新的类就把父类的结构和接口的结构结合起来。类的结构模式是静态的,一个类的结构模式的经典列子就是适配器模式。
2、对象的结构模式 对象的结构模式描述怎么把各种不同的类型的对象组合在一起,以实现新的功能的方法。对象的结构模式是动态的。
结构模式主要包括:适配器模式,缺省适配器模式,合成模式,装饰模式,代理模式,享元模式,门面模式,桥模式。
三、行为模式
行为模式是对在不同的对象之间划分责任和算法的抽象化。行为模式不仅仅是关于类和对象的,而且是关于它们之间相互作用的。
1、类的行为模式 类的行为模式使用继承关系在几个类之间分配行为。
2、对象的行为模式 对象的行为模式是使用对象聚合类分配行为的。
行为模式主要包括:不变模式,策略模式,模板方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,解释器模式,调停者模式。
- JAVA的设计模式浅谈
- Java 设计模式的浅谈
- Java设计模式浅谈
- 浅谈Java设计模式
- 浅谈Java设计模式
- 浅谈java的23种设计模式
- java 设计模式的开场浅谈
- 浅谈java设计模式的原则
- 浅谈Java的几种设计模式
- 浅谈java的23种设计模式
- 浅谈java设计模式的应用
- 浅谈java设计模式 之设计原则
- 浅谈Java设计模式之---策略模式
- 浅谈Java设计模式之------代理模式
- 浅谈java设计模式--策略者模式
- 浅谈Java设计模式之代理模式
- 浅谈Java设计模式之策略模式
- 浅谈Java设计模式----建造者模式
- CentOS7 防火墙操作
- 减少视图层级<merge />
- tungsten安装mysql到oracle复制
- 5-18 二分法求多项式单根 (20分)
- Linxu下crontab结合脚本实现定时任务
- Java 设计模式的浅谈
- hdu1003Max Sum
- 仿QQ5.5登陆框
- 第一次机房收费系统——幽梦
- 数据结构学习二 数据结构之链表图解版【创建,遍历,删除,插入】
- 自定义listview完成上拉刷新,下拉加载的功能,重写ontouchevent方法
- java-基础-Interface、abstract类、Static class 、non static class的区别
- Leetcode Find Peak Element
- 【项目成长日记】不懂事的SVN——This client is too old to work with the working copy at ()