这个是我看到的一个人的问题,没有得到很好的回答。希望大牛帮忙想想。谢过!!!
比如有两个类:
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框架的一些自定义扩展,旨在帮助开发者更高效、更灵活地进行Windows桌面应用开发。下面我们将深入探讨MFC扩展类的相关知识点。 1. **MFC基本结构**:MFC库基于面向...
CEditEx.h文件会定义这个新类,包括其成员变量和成员函数,而CEditEx.cpp则包含类的实现代码,比如重写基类的某些虚函数以扩展功能。 改变字体颜色和背景色是CEditEx类的重要特性。在Windows API中,CEdit控件默认...
默认情况下,`ToolTip`只显示一行文本,但通过扩展这个类,我们可以实现更多的效果,如多行提示、自定义样式、气球提示等。 气球提示是一种特殊的ToolTip类型,它以一个带有三角形指向目标控件的气球形状出现,通常...
通常,只有支持OLE的窗口才能成为有效的拖放目标,但通过扩展这个类,我们可以使非OLE窗口也具备拖放功能,这对于提升应用的灵活性和用户体验非常有帮助。 要实现这一功能,首先需要在自定义的窗口类中覆盖...
本文将深入探讨MFC扩展DLL(Dynamic Link Library)中的导出类技术,帮助你理解如何创建和使用这类DLL。 MFC扩展DLL与常规DLL的主要区别在于它允许直接使用MFC类。这使得DLL可以包含MFC的成员函数,从而能够更方便...
XMLHelper是一个C#编写的类,用于处理XML文档的各种操作,包括读取、修改、删除、新增和创建XML元素。这个类设计为一个基类,可以被继承以实现更...开发者可以根据需要扩展这个类,添加更多的方法来处理复杂的XML操作。
在C++编程中,Microsoft Foundation Class (MFC) 库为Windows应用程序开发提供了一套丰富的类库。在MFC中,`CStatic`类是用于处理Windows...通过研究和学习这个项目,开发者可以更好地理解如何在MFC中扩展`CStatic`类。
一个扩展php内置的异常处理类,在try代码块中,需要使用throw语句抛出一个异常对象,...虽然在PHP中提供的内置异常处理类Exception,已经具有非常不错的特性,但在某些情况下,可能还要扩展这个类来得到更多的功能。
下面我们将详细探讨这个类的核心知识点及其应用。 ...类通常包含属性(变量)和方法(函数)。开发者可以通过实例化这个类来...通过阅读和理解`class_upload.php`的代码,你可以定制并扩展这个类以满足特定项目的需求。
同时,阅读`README`文件可以获取关于如何使用和扩展这个类的具体步骤。如果项目遵循开源许可,那么这个实现可以作为一个学习资源,帮助开发者了解如何在Java中处理自定义标记语言,或者作为现有项目的一个组件,用于...
同样,开发者可以扩展这个类以支持更复杂的通信模式,例如心跳机制、断线重连等。 关于"通信"标签,ACE库提供了丰富的网络通信机制,包括TCP、UDP、SCTP等多种传输协议,以及异步I/O、同步I/O、事件驱动等多种编程...
对话框类(CDialog)可以加载这个模板并在运行时创建相应的窗口。 7. **自定义控件样式**:通过修改控件的风格(例如,使用SetWindowLong函数更改WS_EX_XXX风格),可以改变控件的外观和行为。此外,还可以使用...
这个例子展示了如何利用继承和多态性来设计和扩展类结构。通过将通用功能封装在基类中,然后根据需要在派生类中进行定制,我们可以创建灵活且易于维护的代码。这种面向对象的设计模式在实际的软件开发中非常常见,...
通过使用这个类,开发者可以在对话框中轻松添加一个能够浏览和选择文件夹的树控件,这对于文件管理或设置类的应用程序非常有用。 3. quicklist_demo 1.01:快速列表可能是指一种高效的数据展示控件,可能包含自定义...
【VC 操作Excel的封装类】是一个针对Visual C++(简称VC)开发环境中的Microsoft Office Excel接口进行封装的代码库。...在实际项目中,可以根据具体需求进一步优化和扩展这个类,以满足更多复杂的Excel操作场景。
一个扩展php内置的异常处理类,在try代码块中,需要使用throw语句抛出一个异常对象,...虽然在PHP中提供的内置异常处理类Exception,已经具有非常不错的特性,但在某些情况下,可能还要扩展这个类来得到更多的功能。
在`TestLabelEx`这个项目中,我们可以利用`CLabelEx`类创建具有额外功能的静态控件。这可能包括: 1. 支持鼠标事件:添加对鼠标点击的响应,可以创建可点击的标签,执行相应的回调函数或消息。 2. 显示富文本:扩展...
在这个函数里,我们可以使用`SetTextColor()`函数来设置字体颜色,`TextOut()`函数来绘制文本。通过这种方式,我们可以控制每个字符的颜色,甚至创建渐变色的文本。 2. **字体大小调整**:要改变文本的大小,可以...
通过以上步骤,你就成功地创建了一个MFC扩展DLL并导出了一个类。这个例子中,`CExportClass`是我们的导出类,`TestExportClass`是项目的名称,而`ExportClass`可能是包含导出类的源代码文件。记住,DLL的使用需要...