java 设计模式 扩展_JAVA ? 扩展vs接口 ? 战略设计模式

发布时间:2021-10-17 06:51:56

我有一个场景,其中多个具体类扩展了多个Abstract类.我无法想出一个干净的结构,减少文件数量并避免重复代码.


问题是基于某些标准以不同方式显示各种传感器值.温度,电压,电流等传感器值可以包含anlaog小部件,数字标签或两者的组合.我有3个不同类型的视图的3个抽象类.这3个Abstract类实现了一个定义视图绘制方式的方法.每个传感器视图都扩展了3个抽象类,并实现了读取传感器,执行一些工程转换和显示传感器值的方法.


这里的问题是具体类实现的代码是相同的,无论它扩展的是什么Abstract类. CAnalogTempView,CDigitalTempView和CCustomTempView都具有相同的实现,但扩展了不同的类.


这看起来很尴尬.代码重复,源文件的数量增加了3倍.我在这里错过了一些简单的东西吗?有这样一个问题的模式吗?我可以在运行时扩展传感器视图类吗?实际的代码更复杂.为清楚起见,我简化了问题陈述.


编辑:


有几个传感器视图实现了Abstract视图类.每个传感器的calculate()方法是不同的.为简单起见,我刚刚列出了3个具体的类.同样,你会有CAnalogVoltageView,CDigitalVoltageView,CCustomVoltageView和CAnalogCurrentView,CDigitalCurrentView,CCustomCurrentView等等


public abstract class CView


{


public abstract void draw();


public abstract void calculate();


}


public abstract class CAnalogView extends CView


{


public void draw()


{


// draw specific to analog view


}


}


public abstract class CDigitalView extends CView


{


public void draw()


{


// draw specific to digital view


}


}


public abstract class CCustomView extends CView


{


public void draw()


{


// draw specific to custom view


}


}


// concrete implementations


public class CAnalogTempView extends CAnalogView


{


public void calculate()


{


// read and calculate sensor value here


}


}


public class CDigitalTempView extends CDigitalView


{


public void calculate()


{


// calculate here. same as CAnalogTempView::calculate()


}


}


public class CCustomTempView extends CCustomView


{


public void calculate()


{


// calculate here. same as CAnalogTempView::calculate()


}


}


最佳答案 战略设计模式将帮助您.那么你应该记住一件事.


Use as less extends keyword as possible, better to use Interfaces or composition.


解:


封装calculate()因为calculate()将来可能会发生变化,并且它有不同的实现.


处理:


1)创建一个具有calculate()的接口CalcInterface.


2)通过3个不同的类实现CalcInterface,例如CAnalogTempCalc,CDigitalTempCalc和CCustomTempCalc.然后在每个类中实现calculate().


3)现在是作曲的时候了.假设您有Sensor类(主类)…然后创建CalcInterface类型的对象. PS:它将具有所有人共同的display().


4)现在制作3个不同的类,扩展传感器称AnalogSensor,TempSensor和CustomSensor ……


5)现在,在运行时,您将生成任何类型(CAnalogTempCalc,CDigitalTempCalc和CCustomTempCalc)对象.


编辑:


以下是类图,我对艺术并不擅长…但是这个图将让您对类和接口以及如何有效地使用它们有所了解.


现在,您只需实现CalcInterface即可实现任意数量的CustomCalcuations …


这是通过遵循策略设计模式来适应变化而不改变当前实现的POWER.







相关资源:JAVA_API1.6文档(中文)

相关文档

  • 为什么丘吉尔会被评为最伟大的英国人?
  • 何晓群pdf 应用回归分析第五版_数据统计的理解和应用(十二)多因素logistic回归案例分析...
  • 最遥远的距离初三优秀作文
  • vivo黑屏打不开怎么办
  • 基于face_recognition的人脸识别--打卡系统
  • Java??I/O(File类和Path接口)
  • 社保第六险是什么长期护理险是什么保险有什么作用
  • 闲话“玩”
  • 电脑进入桌面后蓝屏怎么回事
  • 外出游玩策划书范文
  • 小学生读书伴我行演讲稿多篇
  • 口罩喷酒精可将病毒留在口罩上是真的吗口罩可以喷酒精后再次使用吗
  • 小学抒情作文开头
  • 单反遮光罩价格是多少 有什么作用【图解】
  • 三年级作文:让花儿安静着
  • 风枪怎么用
  • 小学生的学习方法演讲稿精选
  • 孕妇可以吃荔枝吗?怀孕了能吃荔枝吗?
  • 有趣而简单的两段代码
  • 十分钟了解算法(1)??初始递归与分治
  • 安全责任协议书内容
  • 一年级新生家长会发言稿范文
  • 2016年12月英语备课组长小结
  • windows下使用Mingw编译x264
  • 一颗肉丸子的热量是多少?哪种做法的肉丸子热量最低?
  • Windows文件处理
  • 销售主管的岗位职责
  • 人力资源经理个人总结
  • JAVA异常类
  • eclipse手动添加本地jar包到本地maven仓库
  • 猜你喜欢

    电脑版