黑马程序员之java学习笔记18

交通灯系统

1)     面向对象的重要经验:谁拥有数据,谁就提供对外操作数据的方法      

2)     Executors类:多线程并发。Executors类的静态方法newSingleThreadExecutor()返回ExecutorService的一个对象,该对象等价于ThreadPool.

如何使用Executors:  

1.     ExecutorService pool = Executors.newSingleThreadExecutor();

                    Pool.execute(new Runnable(){

                         Public void run(){

                              //Detail code….}

                    }

execute(command)方法括号中表示的是要执行的任务,可接收一个线程对象,表示执行该线程。  

2.      ScheduledExecutorService timer=Executors.newScheduledThreadPool(1);//创建一个线程调度池

timer.scheduleAtFixedRate(new Runnable(){},

                           initialplay,//过多久开始做

                           period,//再过多久接着做

                           unit//时间单位(TimeUnit.SECOND)

)

Timer是一个调度控制器。

3)     枚举类有个静态方法valueOf(String s),返回和字符串s一样的枚举对象。如:Lamp.valueOf(“N2S”)返回的就是N2S

4)     Road.this.name:表示内部类用到外部类同名的变量。

5)     交通灯系统小结:在面对一个项目时,需求分析一定得把握准。在此基础上进行面向对象设计和逻辑设计,设计时一定得考虑周全,这样在写代码才会事半功倍。例如:在这个项目中,首先得分析出需要哪些对象,如,灯,道路,灯控制器,然后编写相应的类。再者,根据逻辑,编写出各类之间的相互关系的具体代码。在所有代码都编写完后,才去测试。

6)     银行系统逻辑设计小结:首先创建一个号码管理类(NumberManager),类中有个集合成员变量和号码成员变量,用来管理号码,还有两个方法,创建号码和机器叫号码的方法;然后创建一个号码产生机器类(NumberMachine),将号码管理类对象作为其成员变量,又因为只需要一个机器,所以用单例设计模式来设计这个类。然后,创建一个服务窗口类,可根据客户的类型来决定到底由哪种窗口来为其服务。最后,创建一个测试类,在该类里面利用多线程来模拟不同客户来银行办理业务,然后创建服务窗口类对象,启动多线程窗口服务,测试程序。一句话:异步创建各种客户来银行办理业务à根据客户类型从号码机器中的对应出口获取号码-à服务窗口叫号对客户服务。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值