`

设计模式之设计原则

 
阅读更多

六大设计原则

说到设计模式就不得不说设计模式的六大设计原则;

1. 单一职责原则 (SRP :Single responsibility principle)
2. 里氏替换原则 (LSP :Liskov Substitution Principle)
3. 依赖倒置原则 (DIP :Dependency inversion principle)
4. 接口隔离原则 (ISP :interface-segregation principles)
5. 迪米特法则  (LKP :Least Knowledge Principle)
6. 开放-封闭原则(OCP :Open Closed Principle)

以上是设计模式的六大原则,下面是实战总结的几点(以后会补充):

  • 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起

         解释:把会变化的部分取出并“封装”起来,好让其它部分不受到影响。

         结果:代码变化引起不经意后果变少,系统变得更有弹性

  • 针对接口编程,而不是针对实现编程
  • 多用组合,少用继承

例子如下:

public abstract calss Duck {

     FlyBehavior flyBehavior;

     QuackBehavior quackBehavior;

     

     public abstract void display();

 

     public void performFly() {

          flyBehavior.fly();

     }

     

     public void performQuack() {

         quackBehavior.quack();

     }

     

     public void swim() {

        System.out.println("All ducks float.");

     }

     //设置两个set方法,用来进行设置不同的行为

     public void setFlyBehavior(FlyBehavior fb) {

          flyBehavior = fb;

     }

 

     public void setQuackBehavior(QuackBehavior qb) {

          quackBehavior = qb;

     }

}

 

public interface FlyBehavior {

     public void fly();

}

 

public class FlyWithWings implements FlyBehavior {

     public void fly() {

          System.out.println("I'm Flying!");

     }

}

 

public interface QuackBehavior {

     public void quack();

}

 

public class Quack implents QuackBehavior {

      public void quack() {

           System.out.println("Quack");

      }

}

 

public class ModelDuck extends Duck {

      public ModelDuck() {

             flyBehavior = new FlyWithWings();

             quackBehavior = new Quack();

      }

 

      public void display() {

          System.out.println("I'm a model duck!");

      }

}

 

public class Test {

     public static void main(String[] args) {

             Duck duck = new ModelDuck();

             duck.performQuack();

             duck.performFly();

     }

}

分享到:
评论

相关推荐

    设计模式之蝉

    作者提到他“可以扩展多种‘蝉’”,这暗示了设计模式中的开闭原则(Open/Closed Principle),即软件实体应该对扩展开放,对修改封闭。这样,当系统需要增加新的功能时,可以增加新的类或模块,而无需修改现有代码...

    设计模式之六大原则详解,Markdown笔记

    详细介绍了设计模式六大原则,配有示例代码和图片,有开闭原则,单一职责原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特法则等等。

    24种设计模式介绍与6大设计原则

    24种设计模式介绍与6大设计原则24种设计模式介绍与6大设计原则

    JAVA 24种设计模式介绍与6大设计原则.pdf

    JAVA的六大设计原则是对设计模式应用的指导,是使软件更加灵活、易于维护和复用的基础。这六大设计原则包括: 1. 单一职责原则(Single Responsibility Principle, SRP):一个类应该只有一个引起它变化的原因,即...

    设计模式六大原则 设计模式详解

    理解和应用这些设计原则,可以帮助我们构建更加灵活、可扩展和易于维护的软件系统。在实际开发中,设计模式的这些原则常常相互关联、共同作用,以解决复杂的设计问题。不断学习和实践这些原则,是提升软件开发技能和...

    设计原则与设计模式

    面向对象设计原则:面向对象设计原则、开闭原则、里氏替换原则、里氏替换原则、里氏替换原则

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    设计模式6大原则

    设计模式原则:单一职责原则,里氏替换,依赖倒转,接口隔离,开放关闭等等。

    设计模式的杰作:深入设计模式

    《深入设计模式》还特别强调了软件设计原则的重要性,认为遵循良好的设计原则对于构建高质量的软件系统至关重要。 - **优秀设计的特征**:优秀的软件设计应该具有清晰性、灵活性、可维护性和可扩展性等特点。 - **...

    24种设计模式介绍与6大设计原则-PDF版 查阅方便

    这个PDF文档“24种设计模式介绍与6大设计原则”旨在帮助开发者理解和应用这些模式,提高代码的可维护性和可扩展性。以下是其中的主要内容: 一、设计原则 1. 单一职责原则:一个类或模块应只有一个引起其变化的原因...

    设计模式之里氏转换原则

    里氏转换原则(Liskov Substitution Principle,简称LSP)是面向对象设计的基本原则之一,它是SOLID原则中的L原则。这个原则是由Barbara Liskov在1987年提出的,它规定子类型必须能够替换它们的基类型,而不影响程序...

    设计模式之开放封闭原则

    4. **依赖倒置原则**:这是SOLID原则之一,它强调依赖于抽象而不是具体实现。在C#中,这通常意味着高层模块不应该依赖于低层模块,两者都应依赖于抽象。通过这种方式,系统更加灵活,易于扩展和测试。 5. **工厂...

    C#面向对象设计模式纵横谈(1):面向对象设计模式与原则.zip

    C#作为一种流行的面向对象编程语言,在设计模式的实现上表现出色,而本书《C#面向对象设计模式纵横谈(1):面向对象设计模式与原则.zip》则深刻揭示了如何将这些模式与原则贯彻于C#代码之中。 首先,让我们从设计...

    设计模式六大原则详解 经典

    设计模式是软件开发中的一种最佳实践,它基于一套核心原则来指导我们编写可维护、可扩展的代码。在这篇文章中,我们将深入探讨设计模式的六大原则,这些原则是理解并有效应用设计模式的基础。 首先,我们要了解“开...

    设计模式与设计原则.pdf

    本文件《设计模式与设计原则.pdf》中,将详细地探讨设计模式以及与之相关的六大设计原则。 首先,设计模式主要分为三类: 1. 创建型模式(Creational patterns):这些模式提供了一种在创建对象的同时隐藏创建逻辑...

    android 24种设计模式介绍与6大设计原则

    在Android开发中,设计模式和设计原则是提升代码质量、可维护性和可扩展性的重要工具。以下是关于"Android 24种设计模式介绍与6大设计原则"的详细阐述: 一、六大设计原则 1. **单一职责原则(Single ...

    人人都懂设计模式 人人都懂设计模式

    在“经验篇”中,作者分享了自己在设计模式和软件开发方面的经验和看法,包括设计原则、项目重构等。 本书适合有一定编程基础的 IT 职场新人,对设计模式和编程思想感兴趣的人群。通过阅读本书,读者可以更好地理解...

Global site tag (gtag.js) - Google Analytics