标签:oop python java design-patterns refactoring
我有大约20种不同的服务,我必须向这些服务发送请求,这些请求需要一组略有不同的标头.
不良的旧版代码是这样的,
row = db.query_for_service()
if row.type == 'foo1'
// add common headers to request
// add foo1 specific headers 1
// add foo1 specific header 2
// add foo1 specific header 3
else if row.type == 'foo2'
// add common headers to request
// add foo2 specific header 1
...
...
...
else if row.type == foo20
// add common headers to request
// add foo20 specific header 1
// add foo20 specific header 2
// ...
send_request()
重构它的最佳方法是什么?我考虑过一些可能在这里起作用的模式(策略,构建器),但我不太确定.
我目前正在学习Java和Python,因此我想对两种语言的解决方案有何不同
解决方法:
就我个人而言,我要做的就是遵循这些思路.
#Put this in the initialisation
Map foos<row.type,String> = new Map<row.type, String>()
#Populate the map
map.set('a') = 'headerA specific params x=1'
map.set('b') = 'headerB specific params x=2'
map.set('c') = 'headerC specific params y=3'
map.set ...
Map bars<String,String> = new Map<String,String()
bars.set('fooA') = 'a,b'
bars.set('fooB') = 'a,c'
String commonheader = "HTTP/1.1"
#This would be in a method
row = db.query_for_service()
String output_header += commonheader
for i in bars.get(fooN).split(','):
output_header += foos.get(i)
send_request()
某种伪Java / Python.该地图将预先填充您需要的所有内容,然后选择所需的内容并附加.
标签:oop,python,java,design-patterns,refactoring 来源: https://codeday.me/bug/20191202/2086160.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。