(JAVA基础) 理解复用的编程思想!

问题:
*1.昨天,有个才学JAVA one month 的朋友跟我说:”我还是觉得直接把代码写在 Main方法里简单点,为什么还要用方法呢?”

*2.”还有那个线程,用Runnable实现多一点还是Thread多一点?”

引用块内容
由于本人学习时是没有任何人交流的,所以后来走了不少弯路,特以此记录!(博客1)

探讨:

一: 首先我们来谈谈“方法”,它无非就是把你写在main方法的一块代码 !用一个单独的容器装了起来,那他有什么好处呢?

1.首先是==> 可复用 ! 你想一下,当你在多个地方要调用那块代码的功能时,难道你要在每个地方都去把你那段写在main里的臭长代码copy过去嘛?还是直接调一行方法的代码简单。

2.!第二点:可维护性~~,想想,当你在10个地方copy使用过那段臭长代码,然后老板要你去改下这段代码的功能,难道你要翻十个地方去一个个改? 这样会恶心死你的,这样子不是一个优雅的程序员!

~~其他的像 可读性,代码规范,这些我就不讲了~…..

说了上面这些,就是为了让我们更理解下面这个话题,也就我们前言的第2点!

二: 实现线程用Runnable还是继承Thread :

这里分两种:
1. (当我们以!Runnable为操作对象!的时候)

这个时候用Runnable 就有我们上面所说的两个好处==>!复用,可维护性!
!比如我可以将这个Runnable对象同时传给10个线程,易维护。  

引用块内容
(接口你可以暂理解为方法,但是他跟”方法”不一样的是方法不能当对象,即当做一个参数传给别人,但是接口可以当对象使用!)

*Runnable频道!例:

    Thread thread1=new Thread(runnable);
    Thread thread2=new Thread(runnable);
    Thread thread3=new Thread(runnable);

    private static Runnable runnable=new Runnable() {
    @Override
    public void run() {

    }
};

 PS:注意这里的可复用性不是你觉得很简单的那种!"匿名"对象的写法!,例:

   Thread thread=new Thread(new Runnable() {
        @Override
        public void run() {

        }
    });

  所有一定要像第一种Runnable写法 声明一个Runnable runnable 对象时==>
  才有我说的效果! 第二种直接在()里传new Runnable匿名写法是一次性的。

*Thread频道!

上面说了我们生成一个Runnable runnable对象的好处,那都是基于对Runnable方法做操作的时候!~~所以这个时候用第二实现线程的方式就不合适了,因为很恶心!你懂的! :

class MyThread1 extends Thread{
    @Override
   public void run() {

    *执行同样的功能*
    }
 }
class MyThread2 extends Thread{
    @Override
   public void run() {

    *执行同样的功能*
    }
 }             PS:…我改个run里的功能要同时改10个Thread里的Run方法55

2.* 但是为什么又存在第二种写法呢?

因为操作对象的不同:
~~~上面我们是针对Runnable对象去做讨论,但是我们要复用Thread的时候呢? 如果我们是针对Thread做改变的话,用runnable实现的方式就很不合适了

例:比如有多个类中都开始了某个线程:

 class Test1{
 MyThread1  mythread=new MyThread1;
   //main方法中
  myThread1.start
  }

  class Test2{
 MyThread1  mythread=new MyThread1;
 MyThread2  mythread=new MyThread2;(这里同时用多个线程也是一样的,都很方便)
   //main方法中执行
  myThread1.start; 
  myThread2.start;
   }

所以我们要复用Thread的时候,再使用Runnable方式就很SB了!(运用前言的思维模型)

    //这里是在一个class类中

    Thread thread3=new Thread(runnable);   
    (因为这个时候Thread就属于一次性的,没有复用性!)

    private static Runnable runnable=new Runnable() {
    @Override
    public void run() {

    }
};

==》还是那句话,因为*易维护性差!!
所以要提前预判,你是一次性的代码还是需要多次复用!)

> 总结:所以 没有哪种方式好不好,而是要根据你的业务场景去选择适合你优雅 的方式!

三:

1.最后就是()里面的参数是用来干嘛的,无非就是这个方法内部需要用到某些对象,然后可以如(String str) 直接让别人传进来,进而去操作这个参数对象, 总结就是 便于数据交互!

总结:所以参数是数据交互的很重要的一部分,在类class与另外一个class类的
数据交互中,它也经常会用到靠 构造“方法” 里面的参数传递数据!

2.接口是用来干嘛的?接口无非就是,在一个类class1里面实现了一个动作(即实现了一个接口),然后能让另外一个类class2 通过 impleptent(连接接口对象) 顺利的捕捉到class1的动作, 然后在动作执行时立即在接口方法里面做出对应的操作!

PS:在实际使用中一般都是不同的类之间监听接口比较多,在同一个class中也是可以使用接口监听的!

                                          作者:-风行云K
                                      ----2018/07/27 11:46 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值