学英语,会编程。感谢能在茫茫人海中与你相遇。ExtendAbility在IT领域有可扩展性的含义。ExtendAbility是评价一个项目好坏的标准之一,同时也是衡量一个程序员水平的标准之一。如何提高系统的可扩展性?看完这篇文章你就明白了。
编程语法
Java
提高项目的可扩展性有多重要?
举个例子,公司有一款产品项目,数据推送方式默认是MQ。但实际交付过程中,甲方爸爸也有自己的一套数据推送方式(比如Redis、Socket之类)。作为丙方弟弟的我们需要额外扩展新的数据推送方式,以最短的时间满足客户的需求。
如何提高项目的可扩展性?
其实方法很简单,学会抽象思想(把相同的功能抽象到公共的抽象类中)。以上面的场景为例,不管用MQ、Redis还是Socket。都会有数据推送的publish方法。还可能会接收甲方传来的数据。所以再加上subscribe和unsubscribe方法。当我们需要新增Redis作为数据推送方式时。只需要新增RedisPushMsg类并继承抽象类,重写其父类方法。最后再去自定义的适配器中注册Redis推送方式。从而实现在不影响主体代码(主体代码是通过调用IMessageServLess.publish方法推送数据)的情况下扩展了新的推送数据方式。
// 抽象类
abstract class IMessageServLess {
abstract fun subscribe(topic: String, handler:(String, String)->Unit)
abstract fun unsubscribe(topic: String)
abstract fun publish(topic: String, message: String)
}
// 实现类
class RedisMessageService : IMessageServLess() {
}
// 适配器管理多个推送方式
val messageCache: ConcurrentHashMap<String, IMessageServLess> = ConcurrentHashMap()
由于微信公众号看代码不太方便,这里就不贴代码。感兴趣的可以到我的博客园看看,ITDragon博客。或者点击下方原文链接。
学会上面这种方法,以后只需要改动两个地方的代码,就可以轻松扩展一个新的推送方式。代码简洁,效率提高。
可能有的小伙伴会跳出来反驳。有些公司尽干些卸磨杀驴,过河拆桥的事情,只有代码烂到自己才能看懂,才能保住饭碗。。。这个,我不敢苟同,不敢苟同。个人认为优秀的人在那都优秀,不要因为公司的行为而影响自己未来的发展。大家觉得呢?
单词语法
Grammar
Extend
英 [ɪkˈstend] 美 [ɪkˈstend]
v.扩展;延长;使延期;扩大…的范围(或影响)
Ability
英 [əˈbɪləti] 美 [əˈbɪləti]
n.能力;才能;本领;才智
往期精彩
previous
编程英语 Cache 解决js文件被浏览器缓存问题
Rolling听说你的日志有200g?
英语| 126期 Tree 如何设计树菜单以提高遍历效率?
英语| 125期 Default 如何给已存在字段添加默认值?
英语| 124期 Sort 坑爹的字符串排序