设计模式之设计原则
六大设计原则
说到设计模式就不得不说设计模式的六大设计原则;
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();
}
}