设计模式之设计原则

六大设计原则

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

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();

     }

}

猜你喜欢

转载自washingtin.iteye.com/blog/2312008