建设银行镇海支行网站,衡水网站建设找谁,什么是网站开发工程师,建设网站域名备案一、设计原则
1、找出应用中可能需要变化之处#xff0c;把它们独立出来#xff0c;不要和那些不需要变化的代码混在一起。
2、针对接口编程#xff0c;而不是针对实现编程。
3、多用组合#xff0c;少用继承。
4、为交互对象之间的松耦合设计而努力
5、开放-关闭原则…一、设计原则
1、找出应用中可能需要变化之处把它们独立出来不要和那些不需要变化的代码混在一起。
2、针对接口编程而不是针对实现编程。
3、多用组合少用继承。
4、为交互对象之间的松耦合设计而努力
5、开放-关闭原则类应该对扩展开放对修改关闭
二、设计模式
1、策略模式
定义了算法族分别封装起来让他们之间可以互相替换此模式让算法的变化独立于使用算法的客户。
实例模拟鸭子
最初采用OO技术设计一个鸭子的超类并让各种鸭子继承此超类后采用继承因为鸭子的行为在子类里不断的改变并且让所有的子类都有这些行为是不恰当的用接口一开始好像挺不错但接口不具有实现代码所以继承接口无法达到代码的复用。
采用策略模式设计该功能代码如下 /** * *设计一个飞行行为接口所有飞行行为类必须实现的方法 * */
public interface FlyBehavior { public void fly();
} /** * * 飞行行为的实现给会飞的鸭子使用 * */
public class FlyWithWings implements FlyBehavior{ Override
public void fly() {
System.out.println(i am flying!!!);
} } /** * * 飞行行为的实现给不会飞的鸭子使用 * */
public class FlyNoway implements FlyBehavior{ Override
public void fly() {
System.out.println(i cannot fly!!);
} } /** * *设计一个叫声行为接口所有叫行为类必须实现的方法 * */
public interface QuackBehavior { public void quack();
}
/** * * 给呱呱叫的鸭子使用 * */
public class Quack implements QuackBehavior{ Override
public void quack() {
System.out.println(呱呱呱。。。);
} }
/** * * 给吱吱叫的鸭子使用 * */
public class MuteQuack implements QuackBehavior{ Override
public void quack() {
System.out.println(吱吱吱。。。);
} }
/** * * 给不会叫的鸭子使用 * */
public class Squeak implements QuackBehavior{ Override
public void quack() {
System.out.println(不会叫。。。);
} } /** * * 鸭子父类 * */
public abstract class 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(i can swimming!!!);
}
}
/** * * 绿头鸭子类 * */
public class MallardDuck extends Duck{ public MallardDuck(){
//绿头鸭使用Quack类处理呱呱叫所以当performQuack()被调用时
//叫的职责被委托给Quack对象而我们得到了真正的呱呱叫
quackBehavior new Quack();
flyBehavior new FlyWithWings();
}
Override
public void display() {
System.out.println(我是绿头鸭);
} } 至此一个策略模式实例已经结束下一篇将学习下观察者模式