Questions tagged [interfaces]
Questions about `interface` related design considerations, and also "programming to the interface instead of the implementation"
725
questions
0
votes
3
answers
235
views
Is "my method supposes to work with specific subtype only" a reason to avoid "declare the most abstract type"?
According to Why define a Java object using interface (e.g. Map) rather than implementation (HashMap), I know I should declare the most abstract type as possible. However, I found that a situation ...
7
votes
9
answers
8k
views
Why just "interface segregation principle" but not "method segregation principle"?
According to one definition of "interface segregation principle" that states currently in Two contradicting definitions of Interface Segregation Principle – which one is correct?, a client ...
2
votes
3
answers
231
views
How to retain the concrete type when writing base-class-oriented code?
A scenario often arises when attempting to make some existing code reusable. I introduce an interface to represent the commonality between some new feature I'm implementing and some existing ...
5
votes
5
answers
2k
views
How to think when grouping functionality into modules
What are some commonly used strategies when it comes to divide software into modules, other than there should not be any cyclic dependency between any modules? Some ways I think of
Group everything ...
2
votes
2
answers
222
views
How to "explicitly" declare an implicit interface?
Abstract (virtual) interfaces allow you to explicitly declare a set of methods which a child class must implement in order to compile and be used with other parts of the code. This works great for ...
2
votes
3
answers
505
views
Should my methods return concrete classes or interfaces?
I'm building a ASP.NET Core Web API and the application consists of 3 main modules.
Data module: Contains the entities and DbContext
Web API: Contains the controllers
Service module: Contains all the ...
3
votes
4
answers
478
views
Does "declare the most abstract type" increase coupling actually?
According to Why define a Java object using interface (e.g. Map) rather than implementation (HashMap), I know I should declare the most abstract type possible, so for example:
public interface Fruit{
}...
1
vote
1
answer
106
views
Virtual Method vs. Abstract Class Member
Suppose we are writing an interface class which has some "properties" and "operations." Assume also that every concrete implemented of the interface must contain the same set of ...
0
votes
4
answers
302
views
Are "easier to search for the interface" and "avoid yo-yo to interface to find implementations to fix bugs" reasons to add prefix "I" on interfaces?
According to Should interface names begin with an "I" prefix?, I should not add prefix "I" to interfaces. However, I think prefix "I" in interface may be useful sometimes....
1
vote
3
answers
206
views
How robust should an interface/implementation be?
In a spare-time project of mine, I implemented RSA public-key cryptosystem.
Because the official PKCS#1 standard specify key formats in terms of ASN.1 syntax and DER/BER coding, which is a coding with ...
0
votes
2
answers
194
views
For non-container classes, are "better naming" and "ready for commented codes" good reasons not to declare the most abstract type?
According to Why define a Java object using interface (e.g. Map) rather than implementation (HashMap), I know I should declare the most abstract type possible, but the question is about template class ...
0
votes
1
answer
66
views
Where to store a props type declaration on a DDD project?
I am trying to apply DDD to a Vue project (so it's DDD on the frontend) and I have a doubt as to where store a props type. A Vue component can have props, which is basically named data passed to the ...
1
vote
1
answer
104
views
Correct way to represent acquaintance enforced by interface in UML class diagram
Suppose I have the following client code:
using System;
namespace InterfaceCompositionUml
{
internal class Program
{
static void Main(string[] args)
{
...
0
votes
1
answer
87
views
Why aren't mandatory options requested in the signature of ASP.NET Core "AddXXX" methods?
I've developing a .NET Core library meant to simplify the configuration of the authentication within our SSO system. It will expose two methods to be called in the Program.cs (or Startup.cs) of ASP....
0
votes
1
answer
465
views
Interfaces vs abstract classes for immutable DTOs
At my org we extensively use @Value.Immutable annotation to generate Immutable classes (usually with builders) for our internal data transfer objects (DTOs). In our codebase I've seen both interfaces ...
1
vote
1
answer
77
views
Is there a way to introduce some basic type safety around IntPtrs returned from PInvoke'd methods?
I have a C-Style API with methods that return pointers to native objects, e.g.
EXPORT hs::Pose3d* getJointEndPose(dh::Joint* joint);
And in C#,
[DllImport("Solver.dll")]
public static ...
0
votes
0
answers
86
views
Const correct interface for non-mutating function that returns mutable references into data structure
I very much want my code to be const correct and I'm struggling to get the following case right.
Say we have a function F that takes a data structure D and computes an auxiliary data structure D'. F ...
2
votes
1
answer
405
views
How to implement interface on Java class I don't own?
I want to allow some Java objects to be translated into a string representation which matches Python or JavaScript objects.
I thought that I could tag all compatible classes with compatibilising ...
3
votes
1
answer
281
views
How are interfaces implemented behind the scenes in the Go language?
I have read this article which indicates a double tuple structure, but it is unfortunately light on implementation details, which is what I am looking for.
So... how are interfaces implemented in Go?
...
0
votes
0
answers
134
views
SQL Database design for reusable components and classes
I am working on a small suite of enterprise applications, and I am trying to determine the best way to make them more consistent and maintainable across the board. The applications are .Net Blazer ...
1
vote
2
answers
209
views
It is okay to create an interface of interfaces?
Let me first describe the situation
I have a component that uses dependency injection through a service locator. In the first scenario (image 1) the component needs a class that implements Interface0, ...
0
votes
2
answers
118
views
Where to check preconditions in multi functions
In a library, there could exist three types of functions. The first are those which are visible to the user i.e. their declarations are installed in the library's include directory. The third are ...
1
vote
1
answer
215
views
Gradle/Maven project splitting: interfaces and implementation
Assume we have a single large JVM project (the example is in Kotlin), containing code. As part of a refactoring effort, we are decoupling pieces of the code by splitting the code into multiple modules,...
0
votes
1
answer
93
views
How to seamlessly interact with a message broker when the underlying system (SQS, RabbitMQ) can change depending on the environment?
Having a poor knowledge of the extended features of the available message brokers, I was wondering how to approach this.
We have some environments where only RabbitMQ is available, others where ...
-2
votes
2
answers
344
views
How does injecting a concrete class expose implementation? [duplicate]
I've read that you should pass in an interface instead of a concrete implementation so that the consumer doesn't need to know anything about implementation details.
I don't understand how injecting a ...
1
vote
1
answer
170
views
Refactoring instanceOf, moving logic to POJO when it has database interaction
I'm refactoring some old code, I have a lot of istanceOf in the business part:
if (record instanceof RecordA) {
RecordA recordA = (RecordA) record;
...
0
votes
1
answer
227
views
Exposing only the getters of a singleton interface in C++
I've got a file in my includes folder, which is the folder I expose, that isn't used externally and isn't supposed to be used too. When I noticed that and tried to remove it - I noticed that it's ...
0
votes
2
answers
403
views
How to create an interface in C that can work on two identical structs with differently named fields
Question Background
Consider a scenario in which I have two structs. Both consist of three fields for doubles. The only difference is the names used to refer to these fields. The first struct is for ...
1
vote
2
answers
163
views
physical simulation: design thoughts
I'm an applied physics student and currently working on a simulation of the magnetic interactions of multiple protons within a protein.
Me having only little experience with programming and almost ...
4
votes
3
answers
1k
views
What is the relationship between variance, generic interfaces, and input/output?
There is a blog post by Eric Lippert where he describes how to define variance. In a general sense, covariance is achieved when the direction of assignment compatibility is preserved. Contravariance ...
2
votes
2
answers
420
views
Can access modifiers be completely replaced with programming to interfaces?
If we program to interfaces various parts of the implementation can be effectively hidden. We can define multiple interfaces for a single implementation and use them as needed, instead of 4 fixed ...
0
votes
3
answers
1k
views
How to handle a new method in the interface that is not applicable for all classes?
I am faced with an interesting OOD problem: I have an interface with 3 methods:
interface TestInterface {
String action1();
String action2();
String action3();
}
and 3 classes that ...
0
votes
3
answers
913
views
Which Clean Architecture Areas do Gateways interfaces and their implementations belong to?
Talking about gateways from the Clean Architecture, it is required to distinguish:
The interfaces
The implementation of these interfaces
The TypeScript example:
// === Interface =====================...
2
votes
1
answer
261
views
Interface segregation principle
Let's say we have the following business requirements:
We have a list of dishes. They have a name and a list of ingredients. The restaurant owner always wants to have a dish (and only one) marked as ...
29
votes
3
answers
11k
views
Is it Good Practice to Only Expose Interfaces
I''m working on a C# library where the API provides several public interfaces and a single concrete factory class (itself an interface implementation). This factory provides implementations of the ...
0
votes
4
answers
7k
views
DI: Injecting interfaces vs actual classes
In my job I work with C# (although the language is irrelevant for my question, and now I'd like to focus on Android) and we usually inject interfaces and not the actual classes, so I was wondering ...
16
votes
7
answers
4k
views
Where should interfaces be used?
One thing I've long struggled with being able to grasp properly is, when designing a program in an object-oriented language, where and how should explicitly named/defined interfaces be added? In ...
6
votes
2
answers
1k
views
Naming an interface that does something and its opposite
Maybe I'm overthinking about naming, but it's a problem I've encountered several times and it was really annoying every time.
I have three interfaces. The first is IAssembler, which has assemble(...) ...
0
votes
2
answers
914
views
What are the tradeoffs between a Union type or a wrapper Class to represent a formatted string argument representing multiple types
Assume there's a public void process method on a Java class called A that currently takes a single String argument id.
class A {
public void process(final String id) {
// Some implementation
}
...
-1
votes
1
answer
335
views
How to apply the Open-Closed design principle for different parameters in each class
I am a noob in design principles and design patterns, this might seem like a very silly question.
Some classes in my code have the following structure (image linked):
https://ibb.co/nrp1t2g
As you can ...
3
votes
1
answer
482
views
C++ Abstract classes vs selective compilation
I'm trying to find a way to achieve abstraction with the lowest possible overhead.
This is for an embedded system (Cortex-M4), I use the latest gcc compiler arm-none-eabi.
Let's say we have a pure ...
0
votes
2
answers
1k
views
Golang interface-implementation circular dependency
In trying to separate interface from implementation, I ran into a circular dependency problem.
There is a best practice in the world of Java: consume interfaces instead of concrete classes. That is, ...
2
votes
2
answers
135
views
Use of internal interface around paid APIs
Note: I'm new to using paid APIs (like Stripe, GPT-3, Twilio, ...).
When you are using a paid 3rd-party API, you are essentially betting on them keeping reasonable prices in the future, right?
So in ...
1
vote
0
answers
73
views
Create Views depending on the dynamic type of an object returned by the model in MVP
In my MVP app, my model (a service) returns a collection of ISession pointers. Each pointer points to an object of a derived type HttpSession or HttpsSession. The model (the service) knows nothing ...
0
votes
4
answers
418
views
Adapter or pure interfaces?
I got a bit strange 'future ready' scenario. And I'm not sure if I got it right in regards to C# adapter design pattern.
The scenario is that to be future ready, 'to use the adapter pattern' to easily ...
0
votes
3
answers
657
views
Composite Pattern get part of the tree
I use java and I have structure with a class that contains id, title and perhaps some children of the same class. So I decided to use the composite pattern.
I need to have a method getChildren() that ...
0
votes
2
answers
133
views
Make date range generator interface stateful or stateless?
An app has a feature that's much like any calendar application (like the Outlook calendar for example).
Consequently, I need to do a lot of date logic. I wrote a class with date calculation methods ...
2
votes
3
answers
3k
views
Should you use interfaces or classes in database entities?
Let's say I'm making a library database with books and authors, and I want to model the domain with interfaces, should I also specify the relations in the interfaces?
For example, if I have the ...
0
votes
1
answer
2k
views
Where should interfaces/model definitions live? -- Clean architecture
I'm working on a Node project (in typescript) that features a variation of clean architecture. I have a pretty clear understanding of the different layers of an application and how they depend on each ...
1
vote
1
answer
559
views
Are there reasons why I shouldn't put a cpp file in my interface?
It is quite common to separate C++ code into cpp and hpp files and to define the hpp files as the interface of the code. Therefore, when you use the code as a library, you can expose the interface, ...