设计模式之设计原则

六大设计原则

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

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

     }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值