oracle程序包私有对象关键字,PL/SQL私有对象方法

好吧,这里有一个潜在的解决方案,我已经测试了很短时间,到目前为止它似乎是有效的:

例子:

create or replace type PrivateFoo under SuperFoo

(

member procedure setUpCommonFoo

) NOT INSTANTIABLE NOT FINAL;

create or replace type body PrivateFoo is

-- Member procedures and functions

member procedure setUpCommonFoo is

begin

SELF.someAttrib:='Some Common Default Value';

end;

end;

create or replace type Foo under PrivateFoo

(

CONSTRUCTOR FUNCTION Foo RETURN SELF AS RESULT,

CONSTRUCTOR FUNCTION Foo(fkey FooKey) RETURN SELF AS RESULT -- assume fkey is defined in SuperFoo, and FooKey type is defined somewhere else ;)

)

create or replace type body Foo is

--no-arg Constructor For basic Foo set up.

CONSTRUCTOR FUNCTION PartyConvertor RETURN SELF AS RESULT AS

BEGIN

self.setUpCommonFoo;

RETURN;

END;

--alt constructor for other situations...

CONSTRUCTOR FUNCTION PartyConvertor(fkey FooKey) RETURN SELF AS RESULT AS

BEGIN

self.setUpCommonFoo;

SELF.rarelyUsedAttrib:='Special Value!'; --just assume that someAttrib and rarelyUsedAttrib actually exist ;)

self.fkey := fkey;

RETURN;

END;

--Other Members go here...

end;

现在我不得不承认,我真的不喜欢这种模式。这看起来既尴尬又笨拙。我可能会尽量避免对象类型,而坚持使用包(或者非常简单的对象类型)。作为fatory的包只帮助我解决构造函数的私有公共代码问题,而不是其他类型的公共代码重构。

…除非有更好的方法来处理对象类型。。。。有人吗?有人吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值