`
luckilygenius
  • 浏览: 3088 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

怎么扩展这个类

阅读更多
这个是我看到的一个人的问题,没有得到很好的回答。希望大牛帮忙想想。谢过!!!
比如有两个类:
class A{
}
class B{
    public static A createA();
}
类A不能直接实例化,如  A a = new A(); 禁止象上面直接实例化,
而必须通过B的方法来创建A,如:   A a = B.createA();
就是说:
   A a = new A();  //不允许这样直接实例化
   A a = B.createA();  //只能通过B来创建A

我这样做是有用途的,
因为A是通过代码生成器生成的,生成之后,A就不能再改了,
如果要改,只能通过B来改,比如B创建A对象,并初始化A的一些属性,

也许我的思路不对,不知道大家有没有更好的解决方法?
比如我生成数据对象的增删改查方法,生成后就不能手工去改它,
只能通过代码生成器重新生成。
但如果生成的代码不满足业务,需要增加功能时,我就通过B类来扩展A的功能,

然后调用A时,必须通过B来创建A,避免不经过B的初始化就调用A.这个非常类似于工厂模式,但工厂模式通过反射,我又不想反射,反射影响效率,而且代码难写


主要是想问一下,如何实现这样的功能,A类是自动生成的,不能手工去改,如果要扩展功能,只能通过别的方式去扩展,而且外面要调用A,必须是扩展之后的A.
分享到:
评论

相关推荐

    类的派生运用

    在实际应用中,我们可能会需要扩展这个类来处理三维空间的点(例如,添加`z`坐标)或者具有额外属性和行为的点(例如,颜色、大小等)。这时,我们可以创建一个新的派生类,如`c3DPoint`或`cColoredPoint`,继承自`...

    MFC扩展类.rar

    "MFC扩展类.rar"这个压缩包很可能包含了针对MFC框架的一些自定义扩展,旨在帮助开发者更高效、更灵活地进行Windows桌面应用开发。下面我们将深入探讨MFC扩展类的相关知识点。 1. **MFC基本结构**:MFC库基于面向...

    CEdit扩展类(CEdit Ex.h)

    CEditEx.h文件会定义这个新类,包括其成员变量和成员函数,而CEditEx.cpp则包含类的实现代码,比如重写基类的某些虚函数以扩展功能。 改变字体颜色和背景色是CEditEx类的重要特性。在Windows API中,CEdit控件默认...

    MFC_ToolTip超级类(可以实现各种类型的ToolTip的弹出)

    默认情况下,`ToolTip`只显示一行文本,但通过扩展这个类,我们可以实现更多的效果,如多行提示、自定义样式、气球提示等。 气球提示是一种特殊的ToolTip类型,它以一个带有三角形指向目标控件的气球形状出现,通常...

    商业编程-源码-扩展COleDropTarget类来支持任意窗口拖放.zip

    通常,只有支持OLE的窗口才能成为有效的拖放目标,但通过扩展这个类,我们可以使非OLE窗口也具备拖放功能,这对于提升应用的灵活性和用户体验非常有帮助。 要实现这一功能,首先需要在自定义的窗口类中覆盖...

    MFC 扩展DLL(导出类)

    本文将深入探讨MFC扩展DLL(Dynamic Link Library)中的导出类技术,帮助你理解如何创建和使用这类DLL。 MFC扩展DLL与常规DLL的主要区别在于它允许直接使用MFC类。这使得DLL可以包含MFC的成员函数,从而能够更方便...

    MFC Static扩展类

    在C++编程中,Microsoft Foundation Class (MFC) 库为Windows应用程序开发提供了一套丰富的类库。在MFC中,`CStatic`类是用于处理Windows...通过研究和学习这个项目,开发者可以更好地理解如何在MFC中扩展`CStatic`类。

    扩展php内置的异常处理类.zip

    一个扩展php内置的异常处理类,在try代码块中,需要使用throw语句抛出一个异常对象,...虽然在PHP中提供的内置异常处理类Exception,已经具有非常不错的特性,但在某些情况下,可能还要扩展这个类来得到更多的功能。

    功能强大的PHP图片上传类

    下面我们将详细探讨这个类的核心知识点及其应用。 ...类通常包含属性(变量)和方法(函数)。开发者可以通过实例化这个类来...通过阅读和理解`class_upload.php`的代码,你可以定制并扩展这个类以满足特定项目的需求。

    实现ubb代码的java类

    同时,阅读`README`文件可以获取关于如何使用和扩展这个类的具体步骤。如果项目遵循开源许可,那么这个实现可以作为一个学习资源,帮助开发者了解如何在Java中处理自定义标记语言,或者作为现有项目的一个组件,用于...

    linux下ACE简单封装的SERVER和CLIENT类

    同样,开发者可以扩展这个类以支持更复杂的通信模式,例如心跳机制、断线重连等。 关于"通信"标签,ACE库提供了丰富的网络通信机制,包括TCP、UDP、SCTP等多种传输协议,以及异步I/O、同步I/O、事件驱动等多种编程...

    VC 通用控件类的扩展

    对话框类(CDialog)可以加载这个模板并在运行时创建相应的窗口。 7. **自定义控件样式**:通过修改控件的风格(例如,使用SetWindowLong函数更改WS_EX_XXX风格),可以改变控件的外观和行为。此外,还可以使用...

    CStatic扩展类(labelex.h/labelex.cpp)

    在`TestLabelEx`这个项目中,我们可以利用`CLabelEx`类创建具有额外功能的静态控件。这可能包括: 1. 支持鼠标事件:添加对鼠标点击的响应,可以创建可点击的标签,执行相应的回调函数或消息。 2. 显示富文本:扩展...

    基类与派生类(类base派生两个类)

    这个例子展示了如何利用继承和多态性来设计和扩展类结构。通过将通用功能封装在基类中,然后根据需要在派生类中进行定制,我们可以创建灵活且易于维护的代码。这种面向对象的设计模式在实际的软件开发中非常常见,...

    VC 操作Excel的封装类

    【VC 操作Excel的封装类】是一个针对Visual C++(简称VC)开发环境中的Microsoft Office Excel接口进行封装的代码库。...在实际项目中,可以根据具体需求进一步优化和扩展这个类,以满足更多复杂的Excel操作场景。

    扩展php内置的异常处理类

    一个扩展php内置的异常处理类,在try代码块中,需要使用throw语句抛出一个异常对象,...虽然在PHP中提供的内置异常处理类Exception,已经具有非常不错的特性,但在某些情况下,可能还要扩展这个类来得到更多的功能。

    CStatic 类的扩展 显示LCD

    在这个函数里,我们可以使用`SetTextColor()`函数来设置字体颜色,`TextOut()`函数来绘制文本。通过这种方式,我们可以控制每个字符的颜色,甚至创建渐变色的文本。 2. **字体大小调整**:要改变文本的大小,可以...

    MFC扩展DLL导出类

    通过以上步骤,你就成功地创建了一个MFC扩展DLL并导出了一个类。这个例子中,`CExportClass`是我们的导出类,`TestExportClass`是项目的名称,而`ExportClass`可能是包含导出类的源代码文件。记住,DLL的使用需要...

    Usefull addons to CDaoTableDefCDaoTableDef类的用法

    CDaoTableDef类是...通过扩展这个类,可以进一步定制化功能,以满足特定项目的需求。在"Useful Addons to CDaoTableDef"的主题下,我们可以学习到如何通过源码实现这些增强功能,从而提升数据库应用的质量和效率。

    基于MFC的Ctatic扩展类(两个扩展)

    第一个扩展可能被称为`CLabel`,这个类可能是对CStatic的扩展,以支持动态修改字体和背景颜色。CLabel可能包含以下几个重要的成员函数: 1. `SetFont(CFont* pFont)`: 允许程序员设置控件上显示文本的字体,可以...

Global site tag (gtag.js) - Google Analytics