`
sclsch
  • 浏览: 3334 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

如何重用实现类中的共用方法?

阅读更多

我的类结构的这样的.

public interface CommonUploadService {
	  public void add(List excelDatalist); 
	  public List sameList(List excelDatalist) throws UploadException;
	  public void deleteSame(List excelDataList); 
	  public void setLog(String userName,String fileName) throws UploadException;   
}

 

public interface CityDayService extends CommonUploadService{
	 public List findByCityAndDate(String city,Date date);
}

 

public interface ZhbTCityDayForecastService extends CommonUploadService {
	public List findByCityAndDate(String city, Date date);
}

   其中,CommonUploadService 中setLog方法,在CityDayService 实现类和ZhbTCityDayForecastService 实现类是一样的.如何调整结构,能重用 setLog方法.我想继承一个BaseService,它里面写setLog方法,来达到重用.但又不知道写到哪里?

 我的结构图的这样的.

  • 大小: 576.1 KB
分享到:
评论
9 楼 icewubin 2008-04-25  
不好意思太长了,没时间看。你画个UML图可以更清楚点,从你讲的大概来说,和我最先的回帖差不多啊,不知道你用三个abstract class的用意。可能是各有不同的概念抽象把,你肯定要决定setLog的实现放在某个abstract class里面,OO框架下没有其他什么好办法,除非考虑AOP,走其他途径来减少基础设施代码。
8 楼 sclsch 2008-04-24  
我的意思是
InterfaceA extends InterfaceCommon
InterfaceB extends InterfaceCommon
ImplA implements  InterfaceA
ImplB implements  InterfaceB
这样一个结构.
其中ImplA 实现 InterfaceCommon setLog方法
    ImplB 实现 InterfaceCommon setLog方法
但这两个方法是一致的,没有区别,所以想要重用setLog方法.

我想出一个办法
    ImplA extends abstractClassA
   abstractClassA extends abstractBaseCommon
   abstractBaseCommon extends abstractCommon
   在abstractBaseCommon中定义setlog方法.
ImplA 和ImplB就可以重用了.
但改动太大,沉得没有必要了.

有关方法可以参考下面,就知道我的意图了.
http://blog.csdn.net/suncheng_hong/archive/2008/04/20/2309940.aspx
7 楼 icewubin 2008-04-24  
sclsch 写道
public interface CityDayService extends BaseService{
}
怕是不行吧.

哦,终于明白了,你是想CityDayService extends BaseService,问题是这样为了什么呢,不是已经CityDayService extends CommonUploadService了么,CommonUploadService不就是你说的BaseService,所以我说我还是不明白你真正的意图。
6 楼 icewubin 2008-04-24  
sclsch 写道
你BaseService是interface吗?
如果是BaseService是不可以用实际方法的.

是你说要重用的,我才这么帮你设计的:abstract class BaseService
这样你的各个子类就能继承这个BaseService,如果你要这个BaseService是interface,那这个interface岂不是和CommonUploadService一样了,可能你描述你的需求不明确,我还不是很明白你到底要的什么效果,你最好举个具体的例子吧。

5 楼 titanfoot 2008-04-24  
同意2楼!
4 楼 sclsch 2008-04-24  
你BaseService是interface吗?
如果是BaseService是不可以用实际方法的.
3 楼 icewubin 2008-04-24  
sclsch 写道
public interface CityDayService extends BaseService{
}
怕是不行吧.

可以的,interface继承interface当然是extends关键字。
2 楼 sclsch 2008-04-24  
public interface CityDayService extends BaseService{
}
怕是不行吧.
1 楼 icewubin 2008-04-24  
看看这样行不行,可能还没完全理解你的意思:
public abstract class BaseService implements CommonUploadService {
    public void setLog(String userName,String fileName) throws UploadException {
        //doSomething
    }
}
//假设你的实现类如下名字:
public class Impl extends BaseService implements CityDayService, ZhbTCityDayForecastService {
    public void someMethod() {
        super.setLog();//这样不就行了么?
    }
    //...
}

相关推荐

    Java调用VC DLL实现串口GPS的访问.pdf

    该方法可以实现Java和VC++共用的动态链接库设计,从而重用已经编写的VC++代码,避免代码浪费。 首先,Java语言具有跨平台和完全面向对象的特性,广受计算机软件开发者欢迎。然而,在使用Java语言时,一个常见的问题...

    java Spring mvc 新增和修改的泛型帮助类,用同一接口修改相同实体类的属性

    为了提高代码的可重用性和可维护性,泛型工具类的使用变得尤为重要。本篇将详细介绍如何利用泛型和Hibernate ORM技术实现一个通用的帮助类,以便在处理相同实体类属性的新增和修改时,通过同一接口进行操作。 首先...

    C# Winform DataGridView 公共分页实现

    通过封装这个公共的分页组件,开发者可以在多个WinForm应用中重用代码,降低开发复杂度,同时提高代码的可维护性和一致性。 总之,C# WinForm的`DataGridView`分页实现涉及数据绑定、事件处理和用户界面的交互。...

    Deep in BREW ’s Interface

    - 实现类:定义了一个类,该类包含了一个指向Vtbl的指针,并且可能还包含了一些数据成员。 ##### 使用接口函数时发生了什么? - 调用接口方法:通过接口类型调用方法时,实际上是通过Vtbl中的函数指针间接调用了...

    iOS组件化-实现组件分离

    在iOS开发中,组件化是一种将复杂应用拆分为多个独立、可重用模块的方法,它有助于提高代码的可维护性和可扩展性。本教程将详细介绍如何实现一个简单的iOS组件化,不需要依赖CocoaPods这样的第三方库,而是通过基本...

    广西工行自助终端系统详细设计说明书

    这些方法是系统中多处代码共用的功能组件。 4.1.1 C#层公用类方法 这部分详细设计了通用的C#类方法,它们可以跨模块复用,提高代码重用性。 4.1.2 C#层硬件操作类方法 硬件操作类方法涉及与自助终端硬件的交互,如...

    python面向对象版学员管理系统

    在学员管理系统中,虽然学员类型不同,但它们都继承自`Student`类,因此可以共用一些方法,如`enroll()`(注册)和`drop_out()`(退学),而具体的行为由子类实现。 5. 构造函数(Constructor):Python中的构造...

    Android中自定义控件的declare-styleable属性重用方案

    本篇文章主要讨论如何在Android中实现`declare-styleable`属性的重用,提供一种优化方案,使代码更简洁、专业。 首先,我们来看不完美的代码示例: ```xml ``` 在这个例子中,`ExTextView`和`...

    重构-改善既有代码的设计简体中文高清文字pdf

    - **操作步骤**:将类中的成员变量和方法直接移动到使用该类的地方。 - **示例**:假设有一个`Config`类,它仅仅用于保存应用程序的一些配置信息。由于这个类只有一个实例,并且只包含一些简单的属性,可以将这些...

    .net专业学习面试题部分内容

    这是因为`foreach`语句依赖于`GetEnumerator`方法来获取枚举器对象,从而实现对集合中元素的迭代访问。 #### 构造器能否被重写? - **构造器与重写**:构造器不能被重写。构造器不能被继承,因此也就不存在重写的...

    面向对象程序设计的原则

    面向对象程序设计(Object-Oriented Programming,简称OOP)是一种编程范式,它强调将数据和处理数据的方法封装在对象中,通过类的概念来实现对象的实例化和操作。面向对象程序设计的原则旨在提高软件的可重用性、可...

    c++PPT基础类类文档

    14. **继承**:继承允许一个类(子类或派生类)从另一个类(父类或基类)继承特性,实现代码重用和类层次结构。 15. **多态性**:多态性是面向对象的重要特性,它允许不同的对象对同一消息作出不同响应。C++通过虚...

    面向对象程序设计的61条经验.pdf

    **原则5:** 不要把实现细节(例如放置共用代码的私有函数)放到类的公有接口中。 - **解释:** 私有函数是用来支持类内部逻辑的方法,不应暴露给外部使用。这样做有助于保持接口的清洁,并且可以让实现细节更灵活地...

    Object-Oriented Programming With ANSI-C

    5. 封装与继承的结合:通过定义抽象基类(包含纯虚函数的接口),可以实现类的层次结构,并且可以定义共用的成员函数,以方便在派生类中重用。这在C中通常称为“设计模式”,如工厂模式、单例模式等。 6. 动态内存...

    移动应用开发:创建摄像头监控界面.pptx

    include标签可以实现在一个layout中引用另一个layout的布局,这通常适合于界面布局复杂、不同界面有共用布局的APP中。使用include标签可以降低layout的复杂度,又可以做到布局重用。 ### 创建摄像头监控布局文件 ...

    BPL和DLL中Form共享数据库连接和模块调用的例子.rar

    在Delphi编程环境中,BPL(Borland Package Library)和DLL(Dynamic Link Library)是两种常见的库文件格式,用于代码重用和模块化开发。本案例“BPL和DLL中Form共享数据库连接和模块调用的例子”展示了如何在这些...

    C语言程序设计清华大学郑莉PPT课件.pptx

    这种方法的特点是自顶向下,逐步求精,功能分解,但缺点是效率低,程序的可重用性差。 2. OOP的基本特点 OOP的基本特点包括抽象、封装、继承、多态性等。抽象是对具体对象(问题)进行概括,抽出这一类对象的公共...

    [其他类别]jsp+servlet+javaBean实现MVC_jspmvc(毕设 + 课设).zip

    - `Oprater`:可能是一个通用的操作类,包含了一些共用的业务逻辑。 - `DelServlet`:可能用于删除数据,移除数据库中的记录。 - `CheckServlet`:可能用于数据验证,确保输入的合法性。 6. **文件命名规范**: ...

Global site tag (gtag.js) - Google Analytics