重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
因为多态的特性,父类或者接口的引用是可以接受子类对象的。 比如:
专注于为中小企业提供成都网站建设、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业师宗免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
interface Test{}
class Test1 implements Test{}
class Test2 implements Test{}
上面声明一个Test接口,两个类Test1和Test2,分别实现Test接口。
表现耦合低的意思是说,删除调用层与接受层无关,比如:有这样一个方法可以这样设置参数类型
void say(Test test){System.out.println("");}
然后调用时可以这样传参数
Test1 t1 = new Test1();
Test2 t2 = new Test2():
say(t1); 或 say(t2);
这就是降低耦合,say方法只需要接口类型,具体传入哪个对象是无需关注的,因为接口是一种规则,say方法进来的参数一定是实现Test接口类的对象。即使有一天将Test1与Test2两个类删除,Test接口还在,那么say方法就有用,并且随意扩展一个新的类来实现Test接口,这叫做向后兼容。
简单问题复杂化了。
线程池,本身有任务队列;
还要用到数据队列;
两把锁;
一把数据锁就解决的问题。
自己构建一个blockingqueue,注入到m个生产者线程及n个消费者线程中;
生产者线程不停的生产,往queue里put(),如果队列队列满了,线程wait挂起;
消费者线程不停的消费,从queue里take(),如过队列空了,线程自动挂起;
BlockingQueueT queue = new ArrayBlockingQueueT(1000);
for(int i=0;i5;i++)
new ConsumerThread(queue).start();
for(int i=0;i10;i++)
new ProducerThread(queue).start();
代码耦合:一个软件结构内不同模块之间互连程度的度量(耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。)
软件工程规定写代码的原则是“高内聚,低耦合”。内聚是代码块间的独立性,耦合是各个代码块间的联系。
对于低耦合,粗浅的理解是:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。
代码内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高。所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
高内聚,低耦合的系统有什么好处呢?事实上,短期来看,并没有很明显的好处,甚至短期内会影响系统的开发进度,因为高内聚,低耦合的系统对开发设计人员提出了更高的要求。长期来看,低耦合的模块便于进行单元测试,且便于维护。
举例:
在java中,你想在你的程序中调用某个类比如说是A1,如果你在程序中直接new A1(),这样就写死了。如过下次业务逻辑有变化,你就必须重新修改A1类的代码。在这种情况下,如果A1类被其他的程序调用,你修改了A1类的代码,可能会对其他程序造成影响。
但是如果你在配置文件里配置你要用到的类的相关属性,通过程序动态地区获得,你只用修改这个配置文件,把他指向另一个类A2就行了。用A2替代A1。这就是低耦合,也是java的面向增加开放,面向修改关闭的原则。
程序的耦合度是 你的子程序之间的相关联性,也就是说你的多个类的联系 是否太紧密,打个比方,你房子里边有窗子 ,那房子 和窗子 就有了关联
耦合度 是松还是紧 就看你的 关联 是强还是弱,也就是修改的代价,比如 你窗子是扣死在墙里的 那么你修改窗子 就必须修改墙 这就比较紧密了,但是如果你窗子是按照某种规格的 可以自由拆装的 那么修改的代价就小,耦合度也就低了
我们写程序的目标就是 高内聚 低耦合!
这样修改起来 就不会有太多的联系 不用 改一个地方 其他的都要修改
高内聚,是指让一个类或者一个方法让他专注去做一件事情。低耦合:这个又要求对象,类之间减少耦合性,更通俗的说比如你一个类的方法引用了很多的别的类,而你是直接new出来的,这样就会出现,你修改某个类之后,这个方法就会出现异常错误。
尽最大程度的降低程序的耦合性可以是程序具备良好的扩展性,易于修改。
较为具体的说明就是有的时候程序需要修改,我只需要改正一部分,单是如果程序的耦合性很强的话就需要从头再写一遍很不划算,而正常的开发中都是改那部分,重写那部分,把配置文件一改就成了,java中通过接口(interface),spring技术中的ioc等实现的解耦合