设计模式的六大原则
2012-02-28 17:17
148 查看
http://blog.csdn.net/zhengzhb/article/details/7289269
1.单一原则。 一个类包含的功能尽量少。 假设:一个类包含两个功能。当其中的某个功能需要修改的时候,可能就会影响另一个的功能的实现
2.里氏替换原则。 如果一个类可以替换另外一个类,那这个类是被替换类的子类。假设父类中包含一个方法,子类中也包含同名的方法,那么子类的方法就影响了父类方法的原始功能。比较通用的做法是:原来的父类和子类都继承一个更通俗的基类,原有的继承关系去掉,采用依赖、聚合,组合等关系代替。
里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义:
子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
子类中可以增加自己特有的方法。
当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
3.依赖倒置原则。依赖倒置原则的核心思想是面向接口编程。依赖倒置原则基于这样一个事实:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建起来的架构比以细节为基础搭建起来的架构要稳定的多。在java中,抽象指的是接口或者抽象类,细节就是具体的实现类,使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。传递依赖关系有三种方式,以上的例子中使用的方法是接口传递,另外还有两种传递方式:构造方法传递和setter方法传递
class Newspaper implements IReader { public String getContent(){
return "林书豪17+9助尼克斯击败老鹰……"; } } class Book implements IReader{ public String getContent(){ return "很久很久以前有一个阿拉伯的故事……"; } } class Mother{ public void narrate(IReader reader){ System.out.println("妈妈开始讲故事"); System.out.println(reader.getContent()); } } public class Client{ public staticvoid main(String[] args){
Mother mother = new Mother(); mother.narrate(new Book()); mother.narrate(new Newspaper()); } }
4.接口隔离原则(接口的功能尽量内聚些,不要包含太多的方法)
5.迪米特法则(一个对象应该对其他对象保持最少的了解)。应该将基本的操作(对本类成员的操作)都包含在类自己的方法中,仅仅提供一个被调用的方法(public)。
6.开放闭合原则。对继承,接口开放。对修改闭合。其实只要做到前五点,就符合第六点了。
1.单一原则。 一个类包含的功能尽量少。 假设:一个类包含两个功能。当其中的某个功能需要修改的时候,可能就会影响另一个的功能的实现
2.里氏替换原则。 如果一个类可以替换另外一个类,那这个类是被替换类的子类。假设父类中包含一个方法,子类中也包含同名的方法,那么子类的方法就影响了父类方法的原始功能。比较通用的做法是:原来的父类和子类都继承一个更通俗的基类,原有的继承关系去掉,采用依赖、聚合,组合等关系代替。
里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义:
子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
子类中可以增加自己特有的方法。
当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
3.依赖倒置原则。依赖倒置原则的核心思想是面向接口编程。依赖倒置原则基于这样一个事实:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建起来的架构比以细节为基础搭建起来的架构要稳定的多。在java中,抽象指的是接口或者抽象类,细节就是具体的实现类,使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。传递依赖关系有三种方式,以上的例子中使用的方法是接口传递,另外还有两种传递方式:构造方法传递和setter方法传递
class Newspaper implements IReader { public String getContent(){
return "林书豪17+9助尼克斯击败老鹰……"; } } class Book implements IReader{ public String getContent(){ return "很久很久以前有一个阿拉伯的故事……"; } } class Mother{ public void narrate(IReader reader){ System.out.println("妈妈开始讲故事"); System.out.println(reader.getContent()); } } public class Client{ public staticvoid main(String[] args){
Mother mother = new Mother(); mother.narrate(new Book()); mother.narrate(new Newspaper()); } }
4.接口隔离原则(接口的功能尽量内聚些,不要包含太多的方法)
5.迪米特法则(一个对象应该对其他对象保持最少的了解)。应该将基本的操作(对本类成员的操作)都包含在类自己的方法中,仅仅提供一个被调用的方法(public)。
6.开放闭合原则。对继承,接口开放。对修改闭合。其实只要做到前五点,就符合第六点了。
相关文章推荐
- 【设计模式】六大原则
- 设计模式六大原则(4):接口隔离原则
- 设计模式学习之——六大设计原则之三:依赖倒置原则
- 设计模式六大原则
- 设计模式六大原则
- 设计模式六大原则之--依赖倒置原则(DIP)
- 设计模式六大原则(3):依赖倒置原则
- 设计模式六大原则——依赖倒置原则
- 设计模式六大原则(5):迪米特法则
- 设计模式-六大设计原则(附加实际开发建议以及计算器例子)
- 设计模式六大原则
- 设计模式之六大设计原则
- 设计模式六大设计原则之接口隔离原则(Interface Segregation Principle)
- 设计模式六大原则 依赖倒置原则
- 设计模式六大原则(4):接口隔离原则
- 设计模式六大设计原则 详细整理版
- 设计模式六大原则
- 设计模式六大原则(6):开闭原则
- 设计模式之六大原则——单一职责原则(SRP)
- 设计模式六大原则(1):单一职责原则