java设计模式 -------- 基本原则

本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020

在看设计模式的基本原则之前,先来看下一些基本的面向对象知识。

1. 面向对象思想的建立:

面向的对象的三原则,即继承,封装和多态,那么这些又是如何定义,又如何区分呢?

封装  :  隐藏实现的一些细节,提供一种公开的访问方式。

eg. private可以把一些成员变量和成员方法给隐藏起来。

继承  :  可以具备某些已经存在的功能。

多态  :  对象在不同时刻体现不同的优势。

eg. List list = new ArrayList();

list = new LinkedList();

2. 设计思想的区别:

抽象类 : 是对一组具有相同的属性和方法的在逻辑上有关系的一种抽象。

is a的关系。

接口 : 对一组具有相同的属性和方法的在逻辑上不相关的一种抽象。

like a的关系。

3. 面向对象设计的几个基本的原则:

   总原则:开闭原则

     开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有代码。

   A:单一职责

     系统中的第一个对象应该只有一个单独的职责,所有对象关注的应该是自身职责的完成。

     基本思想:高内聚,低耦合。

   B:开闭原则

     一个对象的扩展开放,对修改关闭。

     基本思想:对类的改动是通过增加代码进行的,而不是修改现有的代码。

   C:里氏替换原则

     在任意父类出现的地方,都可以使用子类来代替。

   D:依赖注入原则

     要依赖于抽象,不要依赖于具体的实现。

     基本思想:在开发中尽量的面向接口编程。

   E:接口分离原则

     不要去使用一些不需要使用的功能。

     基本思想:一个接口不要提供太多的行为。

   F:迪米特原则

     一个对象对其他的对象应该尽可能少的了解。

     基本思想:降低耦合。

   G:合成复用原则

     优先使用组合而不是继承原则,即尽量首先使用合成/聚合的方式,而不是使用继承。

     基本思想:在利用对象的最低点,要优先考虑组合,而不是继承,因为父类的任何改变都可能直接影响子类的行为。

     eg. 把大象装进装箱:

继承实现:

         class A{方法(){"打开冰箱"}}

   class B extends A{方法(){"装进大象"}}

    class C extends B{方法(){"关闭冰箱"}}

       组合实现:

         class Demo{

           new A().方法(); 

           new B().方法();

           new C().方法();

         }

   

   以上就是设计模式的基本原则,看起来好象很简单,但在实际应用的过程中还是会遇到不少的问题,在此记录下,以督促自己在以后的软件开发中尽量应用设计模式,从而更加深刻的理解。以上笔记,是我自己在听"51cto"设计模式一视频中所做的,后面有可能会继续做。

 

时间: 2024-08-05 11:09:57

java设计模式 -------- 基本原则的相关文章

Java设计模式基本原则

设计模式六大原则 总原则: 开闭原则(Open Close Principle) 开闭原则:对扩展开放,对修改关闭.即为了程序的扩展性好,易于维护和升级,我们需要使用接口和抽象类. 1.单一职责原则 不要存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,如若不然,就应该把类拆分 2.里氏替换原则(Liskov Substitution Principle) 里氏替换原则(Liskov Substitution Principle)面向对象设计的基本原则之一.里氏替换原则中说,任何基

java设计模式系列之设计模式概要(1)

一.什么是设计模式 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是

菜鸟版JAVA设计模式—适配器模式,装饰模式,代理模式异同

节前把3个设计模式的学习心得分享了一下,分别是适配器模式,装饰模式,代理模式. 但是似乎越写越有些迷糊,这三种模式都有着一些大同小异的地方,总是有些搞不清. 今天再重新学习下,把学习心得分享给大家一下.这次是结合的我工作中的实际项目. 设计模式,其实是一种解决方法,JAVA作为一种面向对象的语言,对于所有的设计模式在实现上,总是少不了对接口的实现,对抽象类的继承,有时候似乎是为了去实现接口而去写接口,所以在这三种模式的说明代码中,我们都定义了接口这些东西,所以才有了现在的混淆. 先不厌其烦的介绍

Java设计模式(十) 备忘录模式 状态模式

(十九)备忘录模式 备忘录模式目的是保存一个对象的某个状态,在适当的时候恢复这个对象. class Memento{ private String value; public Memento(String value){ this.value = value; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } class Storage

Java设计模式(二)-单例模式

单例模式建议保证某个对象仅仅只有一个实例,当只有一个对象来协调整个系统的操作时,在计算机系统中,线程池.缓存.日志对象.对话框.打印机.显卡的驱动程序对象常被设计成单例,总之,选择单例模式就是为了避免不一致状态,避免政出多头. 下面是单例模式的类图:包括的private和static修饰的实例instance.一个private的构造函数.一个static的getInstance函数 单例模式主要有三种:懒汉式单例.饿汉式单例.登记式单例三种 1.饿汉式单例:在类的初始化时候,自行创建了实例 c

JAVA设计模式之 装饰模式【Decorator Pattern】

一.概述 动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活.装饰模式是一种对象结构型模式.装饰模式是一种用于替代继承的技术,使用对象之间的关联关系取代类之间的继承关系.在装饰模式中引入了装饰类,在装饰类中既可以调用待装饰的原有类的方法,还可以增加新的方法,以扩充原有类的功能. 二.适用场景 装饰原有对象.在不改变原有对象的情况下扩展增强新功能/新特征..当不能采用继承的方式对系统进行扩展或者采用继承不利于系统扩展和维护时可以使用装饰模式. 三.UML类图 四

(九)JAVA设计模式之单例模式

JAVA设计模式之单例模式 一.单例模式的介绍 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点.     全局对象和Singleton模式有本质的区别,因为大量使用全局对象会使得程序质量降低,而且有些编程语言根本不支持全局变量.最重要的是传统的全局对象并不能阻止一个类被实例化多次. 二.单例模式的特点 单例类只能有一个实例 单例类必须自己创建自己的唯一实例. 单例类必须给所有其他对象提供这一实例.

JAVA设计模式有感

记得在大学学JAVA那阵,就觉得JAVA是一个c语言的一个包装,各种封装好的类库.功能,学习JAVA能快速上手编码.时隔8年,我感觉自己不懂JAVA. 最近看了有1个月的设计模式了,进度比较缓慢,一共才看了4个"策略模式","观察者模式","装饰者模式","工厂模式".也谈一谈自己的感受.其实这些设计模式以前也看过,当时的水准也就是硬生生记下了每个设计模式是怎么运作的,从没有想过它遵循了什么原则,达到了什么目的.因此,看过一遍

学习Java设计模式的10条建议

设计模式在整个Java的学习路线图中扮演着承上启下的作用. 在整个软件生命周期中,唯一不变的就是变化.设计模式就是要在软件设计.编码中对现有问题的一种总结,并从中寻求应对变化的策略. 自己初次接触设计模式有以下几个感觉: 内容很抽象. 示例都能看得懂,但不知道实际中如何应用. 不理解为什么要把“好好的程序”设计成这么复杂? 转眼之间到了需要自己参与需求分析.设计,并且维护之前留下的遗产代码(Legacy Code)的时候了. 再次开始学习设计模式,有了新的收获: 站在变化的角度去看,设计模式虽然