java设计模式——设计基本原则

设计原则一:找出应用中可能需要变化的部分,把它们独立出来,不要和不需要变化的代码混在一起。
         当我们的需求改变时,需要修改某一部分的代码,可以将这一部分的代码抽取出来,如果以后再次发生变化,可以只修改抽取出来的代码,而不必修改其他的代码。
设计原则二:针对接口编程,而不是针对实现编程。
        利用java中多态的特性,针对超类型的编程,而不必关心具体执行时真正对象的类型。

设计原则三:为了交互对象之间的松耦合设计而努力。

        松耦合设计,指我们在需要修改一些模块时,不会对其他模块产生影响。

设计原则四:类应该对扩展开发,对修改关闭

 

设计原则五:最少知识原则,不要让太多类耦合在一起

               就任何对象而言,在该对象的方法内,我们只应该调用属于以下范围的方法:该对象本身的方法;被当做方法的参数传递进来的对象;此方法所创建或实例化的任何对象;对象的任何组件。

      


eg:

 
java设计模式——设计基本原则
 

/**
* Created by lwb on 2014/11/16.
*/
public abstract class Duck {
    FlyBehavior flyBehavior;
    public void fly() {
        flyBehavior.fly();
    } //针对接口编程,并不关心具体的实现类。同时将需求中需要变化的代码抽离了出去。

    public void setFlyBehavior(FlyBehavior flyBehavior) {
        this.flyBehavior = flyBehavior;
    }

    public void swim(){
        System.out.println("All ducks can swim...");
    }
}
public class MallardDuck extends Duck {

}

public interface FlyBehavior {
    public void fly();
}


public class FlyWithWings  implements FlyBehavior{

    @Override
    public void fly() {
        System.out.println("I'm flying...");
    }
}

public class Cannotfly implements FlyBehavior {

    @Override
    public void fly() {
        System.out.println("I cannot fly...");
    }
}



public class MiniDuckSimulator {
    public static void main(String[] args) {
        MallardDuck mallardDuck = new MallardDuck();
        mallardDuck.setFlyBehavior(new FlyWithWings());//动态的指定飞行的方式
        mallardDuck.fly();
        mallardDuck.swim();
    }
}