• 设计模式


    设计原则:(重要)
    1.
    逻辑代码独立到单独的方法中,注重封装性--易读,易复用。
    不要在一个方法中,写下上百行的逻辑代码。把各小逻辑代码独立出来,写于其它方法中,易读其可重复调用。
    2.
    写类,写方法,写功能时,应考虑其移植性,复用性:防止一次性代码!
    是否可以拿到其它同类事物中应该?是否可以拿到其它系统中应该?
    3.
    熟练运用继承的思想:
    找出应用中相同之处,且不容易发生变化的东西,把它们抽取到抽象类中,让子类去继承它们;
    继承的思想,也方便将自己的逻辑建立于别人的成果之上。如ImageField extends JTextField;
    熟练运用接口的思想:
    找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。

    运用继承的特性,将其中共同的部分提升出来,避免重复编程。
    即:设计一个鸭子的超类(Superclass),并让各种鸭子继承这个超类。
    public class Duck{
         public void quack(){  //呱呱叫
                  System.out.println("呱呱叫");
          }
         public void swim(){   //游泳
                System.out.println(" 游泳");
          }    
         public  abstratact void display(); /*因为外观不一样,让子类自己去决定了。*/
    }
    对于它的子类只需简单的继承就可以了,并实现自己的display()方法。
    //野鸭
     public class MallardDuck extends Duck{
         public void display(){
              System.out.println("野鸭的颜色...");
       }
     }
    //红头鸭
     public class RedheadDuck extends Duck{
         public void display(){
              System.out.println("红头鸭的颜色...");
       }
    }
    不幸的是,现在客户又提出了新的需求,想让鸭子飞起来。这个对于我们OO程序员,在简单不过了,在超类中在加一
    个方法就可以了。
    public class Duck{
         public void quack(){  //呱呱叫
                  System.out.println("呱呱叫");
          }
         public void swim(){   //游泳
                System.out.println(" 游泳");
        }    
        public  abstract void display(); /*因为外观不一样,让子类自己去决定了。*/
       public void fly(){
            System.out.println("飞吧!鸭子"); 
      }
    }
    对于不能飞的鸭子,在子类中只需简单的覆盖。
    //残废鸭
     public class DisabledDuck extends Duck{
         public void display(){
              System.out.println("残废鸭的颜色...");
       }
       public void fly(){
        //覆盖,变成什么事都不做。 
      }

    其它会飞的鸭子不用覆盖。
    这样所有的继承这个超类的鸭子都会fly了。但是问题又出来了,客户又提出有的鸭子会飞,有的不能飞。
    >>>>>>点评:
    对于上面的设计,你可能发现一些弊端,如果超类有新的特性,子类都必须变动,这是我们开发最不喜欢看到的,一个类变让另一个类也跟着变,这有点不符合OO设计了。这样很显然的耦合了一起。利用继承-->耦合度太高了.
  • 相关阅读:
    Java接口面面观
    Java之今天的异常处理了吗
    Java中自动装箱与拆箱详解
    java中this关键字解析
    Java语言实现机制
    Centos7 中 service iptables save 失效
    基于JQuery网页漂浮广告窗口Js详解
    JS日历
    js时间转换
    两种方法实现在HTML页面加载完毕后运行某个js
  • 原文地址:https://www.cnblogs.com/miracle-0807/p/5890067.html
Copyright © 2020-2023  润新知