interface Average{
public double getAverage();
}
class A implements Average
{
String s[];
for(i=0;i<s[]length;i++)
{BufferReader br=new BufferRead(new InputStreamReader(Systemin));
s[i]=brreadline(); }
public double getAverage()
{int j;double sum=0;
for(i=0;i<s[]length;i++)
{sum+=s[i];j++;}
double avg;avg=sum/j;
return avg;
}
}
不好意思,都没用过Java,不会异常处理。。。随便写写,练练手而已
你这个命题是典型的策略模式(设计模式中的一种)
不同的交通工具就是每一个装在“锦囊”(接口)中的“锦囊妙计”(策略)
你可以搜索一下关键字“策略模式”
也可你看一下我这个故事:
刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,
嘿,还别说,真是解决了大问题,搞到最后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子
的。
先说这个场景中的要素:三个妙计,一个锦囊,一个赵云,妙计是小亮同志给的,妙计是放置在锦囊
里,俗称就是锦囊妙计嘛,那赵云就是一个干活的人,从锦囊中取出妙计,执行,然后获胜,用JAVA 程序
怎么表现这个呢?
计是同一类型的东东,那咱就写个接口:
package comcbf4lifestrategy;
/
@author cbf4Life cbf4life@126com
I'm glad to share my knowledge with you all
首先定一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口
/
public interface IStrategy {
//每个锦囊妙计都是一个可执行的算法
public void operate();
}
您的设计模式
第 5 页
然后再写三个实现类,有三个妙计嘛:
package comcbf4lifestrategy;
/
@author cbf4Life cbf4life@126com
I'm glad to share my knowledge with you all
找乔国老帮忙,使孙权不能杀刘备
/
public class BackDoor implements IStrategy {
public void operate() {
Systemoutprintln("找乔国老帮忙,让吴国太给孙权施加压力");
}
}
package comcbf4lifestrategy;
/
@author cbf4Life cbf4life@126com
I'm glad to share my knowledge with you all
求吴国太开个绿灯
/
public class GivenGreenLight implements IStrategy {
public void operate() {
Systemoutprintln("求吴国太开个绿灯,放行!");
}
}
package comcbf4lifestrategy;
/
@author cbf4Life cbf4life@126com
I'm glad to share my knowledge with you all
孙夫人断后,挡住追兵
/
public class BlockEnemy implements IStrategy {
public void operate() {
您的设计模式
第 6 页
Systemoutprintln("孙夫人断后,挡住追兵");
}
}
好了,大家看看,三个妙计是有了,那需要有个地方放这些妙计呀,放锦囊呀:
package comcbf4lifestrategy;
/
@author cbf4Life cbf4life@126com
I'm glad to share my knowledge with you all
计谋有了,那还要有锦囊
/
public class Context {
//构造函数,你要使用那个妙计
private IStrategy straegy;
public Context(IStrategy strategy){
thisstraegy = strategy;
}
//使用计谋了,看我出招了
public void operate(){
thisstraegyoperate();
}
}
然后就是赵云雄赳赳的揣着三个锦囊,拉着已步入老年行列的、还想着娶纯情少女的、色迷迷的刘老
爷子去入赘了,嗨,还别说,小亮的三个妙计还真是不错,瞅瞅:
package comcbf4lifestrategy;
/
@author cbf4Life cbf4life@126com
I'm glad to share my knowledge with you all
/
public class ZhaoYun {
/
赵云出场了,他根据诸葛亮给他的交代,依次拆开妙计
/
public static void main(String[] args) {
Context context;
您的设计模式
第 7 页
//刚刚到吴国的时候拆第一个
Systemoutprintln("-----------刚刚到吴国的时候拆第一个-------------");
context = new Context(new BackDoor()); //拿到妙计
contextoperate(); //拆开执行
Systemoutprintln("\n\n\n\n\n\n\n\n");
//刘备乐不思蜀了,拆第二个了
Systemoutprintln("-----------刘备乐不思蜀了,拆第二个了-------------");
context = new Context(new GivenGreenLight());
contextoperate(); //执行了第二个锦囊了
Systemoutprintln("\n\n\n\n\n\n\n\n");
//孙权的小兵追了,咋办?拆第三个
Systemoutprintln("-----------孙权的小兵追了,咋办?拆第三个
-------------");
context = new Context(new BlockEnemy());
contextoperate(); //孙夫人退兵
Systemoutprintln("\n\n\n\n\n\n\n\n");
/
问题来了:赵云实际不知道是那个策略呀,他只知道拆第一个锦囊,
而不知道是BackDoor这个妙计,咋办? 似乎这个策略模式已经把计谋名称写出来了
错!BackDoor、GivenGreenLight、BlockEnemy只是一个代码,你写成first、second、
third,没人会说你错!
策略模式的好处就是:体现了高内聚低耦合的特性呀,缺点嘛,这个那个,我回去再查查
/
}
}
就这三招,搞的周郎是“陪了夫人又折兵”呀!这就是策略模式,高内聚低耦合的特点也表现出来了,
还有一个就是扩展性,也就是OCP 原则,策略类可以继续增加下去,只要修改Contextjava 就可以了,这
个不多说了,自己领会吧。
以上摘自网络,详情参考 >
这种接口我做过。具体的做法如下:
做一个接口程序,二次开发者调用接口程序,通过消息来相互通信。接口程序开发时主要设计2个部分:启动部分和功能实现部分
一、接口程序的启动
让二次开发者通过shellexecute函数调用接口程序,接口程序启动后向调用程序发送一个实现约定的用户消息,其中包含接口程序自身的handle,这样调用程序通过handle就和接口程序建立了连接,可以向接口发送消息了。
二、接口程序的功能执行
一般是调用程序向特定TXT文本写入指定格式的指令和数据,然后用消息通知接口程序,接口程序读取TXT,分析指令,执行相应的功能即可。
这样做的好处是:1、可以处理很大的数据量。2、便于你维护,用DLL的话,函数接口变了,二次开发的人就得哭。
还有你要注意做这种程序的时候要避免用户双击启动你的接口程序,换句话说,你要保证你的程序是被别的程序“带”起来的。
接口实际上是作为一个标准存在的,例如:电脑上实现了USB接口,U盘,打印机等等也都实现了此标准。
interface USB { // 定义USB接口
public void start() ; // 开始工作
public void stop() ; // 结束工作
}
class Computer { // 定义电脑类
public static void plugin(USB usb) { // 定义usb参数以接收实现USB接口的类实例化的对象
usbstart() ; // 调用USB接口的start()方法
usbstop() ; // 调用USB接口的stop()方法
}
}
class Flash implements USB { // 实现USB接口
public void start() { // 实现USB接口的start()方法
Systemoutprintln("U盘开始工作。") ;
}
public void stop() { // 实现USB接口的stop()方法
Systemoutprintln("U盘停止工作。") ;
}
}
class Print implements USB { // 实现USB接口
public void start() { // 实现USB接口的start()方法
Systemoutprintln("打印机开始工作。") ;
}
public void stop() { // 实现USB接口的stop()方法
Systemoutprintln("打印机停止工作。") ;
}
}
public class InterPolDemo02 {
public static void main(String args[]) {
Computerplugin(new Flash()) ; // 实例化Flash类的对象并将其传入Computer的plugin(USB usb)方法
Computerplugin(new Print()) ; // 实例化Print类的对象并将其传入Computer的plugin(USB usb)方法
}
}
/ 以上的例子体现了接口的通用性和可维护性
U盘插到电脑上打印机连到电脑USB接口上就启动了,并且可以通过电脑来使用它们各自独有的功能可以传输数据或打印资料,一旦将U盘或打印机数据线拔出电脑USB接口,电脑就无法使用它们。通过电脑类将U盘和打印机对象传入USB接口所定义的参数里并调用到自身通过USB接口实现的方法来完成启动和结束的工作,这样一道简单的程序就已经体现出了接口的实际作用。
/
package comshape;
public interface Volume {
double PI = 31415926;
//计算体积
public double calVolume();
//计算表面积
public double calArea();
}
package comshape;
//圆柱体
public class Cylinder implements Volume {
private double Radius ;
private double Height;
public Cylinder(double Radius, double Height) {
thisRadius = Radius;
thisHeight = Height;
}
public double getRadius() {
return Radius;
}
public void setRadius(double radius) {
Radius = radius;
}
public double getHeight() {
return Height;
}
public void setHeight(double height) {
Height = height;
}
@Override
public double calVolume() {
// TODO Auto-generated method stub
return PI Radius Radius Height;
}
@Override
public double calArea() {
// TODO Auto-generated method stub
return PI Radius Radius 2 + PI Radius Height 2;
}
}
package comshape;
//圆锥
public class Cone implements Volume {
private double Radius;
private double Height;
public double getRadius() {
return Radius;
}
public void setRadius(double radius) {
Radius = radius;
}
public double getHeight() {
return Height;
}
public void setHeight(double height) {
Height = height;
}
public Cone(double Radius, double Height) {
thisRadius = Radius;
thisHeight = Height;
}
//圆锥体的母线的长
public double getConeLine() {
double Line = Radius Radius + Height Height;
return Mathsqrt(Line);
}
@Override
public double calVolume() {
// TODO Auto-generated method stub
return PI Radius Radius Height / 3;
}
@Override
public double calArea() {
// TODO Auto-generated method stub
return PI Radius Radius + PI Radius getConeLine();
}
}
public class ShapeTestDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Cylinder cy = new Cylinder(3, 4);
Systemoutprintln(cycalVolume());
Systemoutprintln(cycalArea());
Cone cone = new Cone(3, 4);
Systemoutprintln(conecalVolume());
Systemoutprintln(conegetConeLine());
Systemoutprintln(conecalArea());
}
}
以上就是关于java一个程序编写求助(求平均值)(接口,异常处理)全部的内容,包括:java一个程序编写求助(求平均值)(接口,异常处理)、Java 接口程序、delphi如何编写用户二次开发接口,提供思路就可以等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)