相关疑难解决方法(0)

使用空方法的默认实现的设计模式

是否有特定的设计模式描述了提供非抽象默认实现的场景,该实现使用空的NO-OP实现实现接口上的所有或部分方法.这样做的目的是减轻子类的负担,实现他们自己可能不需要/使用的方法:

public interface MyInterface {
    public void doThis();
    public void doThat();
    public void done();
}

public class MyClass implements MyInterface {
    public void doThis() {
        // NO-OP
    }
    public void doThat() {
        // NO-OP
    }
    public void done() {
        // Some standard implementation
    }
}

public class MuSubClass extends MyClass {
    public void doThat() {
        // Subclass only cares about doThat()
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经看到过这种模式多次使用,包括SAX框架中的Java的DefaultHandlerMouseAdapter.在某些情况下,这些类被命名为Adapters,但我的印象是适配器模式在两个不同的接口之间进行转换.

鉴于在这些实例中只有一个声明的接口被转换为该接口的未定义子集 - 我不清楚这是如何在适配器模式的精神.

此外,我不太明白这是如何遵循NullObject模式的,因为某些方法可能有一个实现,而NullObject传统上是一个单例.

design-patterns adapter null-object-pattern solid-principles interface-segregation-principle

21
推荐指数
1
解决办法
6382
查看次数

接口隔离原理 - 编程到接口

我正在阅读有关SOLID和其他设计原则的内容.我认为ISP与"程序接口,而非实现"相同.但看起来这些是不同的原则?

有区别吗?

oop design-patterns solid-principles interface-segregation-principle

21
推荐指数
3
解决办法
5744
查看次数

UserControl作为界面,但在Designer中可见

所以我们有一个C#WinForms项目,其中包含一个包含数百万UserControl的表单.除了自己的特定成员之外,每个都UserControl自然地暴露所有UserControl方法,属性等.

我一直在想减少处理这些问题的复杂性的一种方法UserControl是通过接口访问它们.因此,而不是拖放到UserControl表单上,在构造函数中这样的东西:

public class MyGiantForm
{
    ICustomerName cName;

    public MyForm()
    {
        InitializeComponent();

        var uc = new SomeCustomerNameUserControl();
        this.Controls.Add(uc);
        cName = uc;
    }
}
Run Code Online (Sandbox Code Playgroud)

SomeCustomerNameUserControl实现ICustomerName,自然地,并ICustomerName包含我真正关心的特定属性(比如说FirstNameLastName).通过这种方式,我可以UserControl通过cName成员参考,而不是被所有UserControl成员击败,我只得到那些成员ICustomerName.

一切都很好,但问题是,如果我这样做,我SomeCustomerNameUserControl在Designer 中看不到.有谁知道我可以做到这一点,但仍然看到UserControl表格的设计表面?

编辑:执行此操作的一种方法是将控件放在基本表单上,这种方法并不过分复杂.默认情况下(在C#中)控件成员是私有的.然后我为每个控件创建一个属性,通过接口公开它.

但是,我会对其他一些方法感兴趣,即使它更复杂.似乎有一些方法可以用IDesignerHost来做,但我找不到任何适用的例子.

.net c# user-controls custom-controls winforms

7
推荐指数
3
解决办法
7560
查看次数