Первый вопрос:: Что вы хотите разделить между этими классами?
Ожидая ответа, я попытаюсь дать вам общее объяснение с максимально возможной детализацией.
1 - Обмен только методы
Если вы хотите поделиться только методы, лучшая практика заключается в использовании интерфейсов, чтобы разделить логику, как вы хотите, и дать его к конкретным классам:
public interface IInterface1{
//some methods
}
public interface IInterface2{
//some methods
}
public class MyClass : IInterface1, IInterface2{
}
MyClass может быть абстрактным, если вы хотите, и вы можете поместить некоторые методы как виртуальные, чтобы переопределить их, если вы хотите слишком
2 - методы совместного использования и свойства
Вы будете делать это с тем же способом, но интерфейсы должны быть добавлены к правильному классу
public interface IInterface1{
//some methods
}
public interface IInterface2{
//some methods
}
public abstract class MyAbstractClass {
//some methods and properties
}
public class MyClass : MyAbstractClass, IInterface1, IInterface2{
}
Вы можете добавить интерфейсы к MyAbstractClass вместо MyClass, это зависит от вашей архитектуры и ваши потребности
3 - Singleton
Для одноточечного, как говорят в комментариях, это лишь способ получить глобальный доступ, так что вы должны сделать это в вашем «последнего» класса, здесь MyClass
Я надеюсь, я выразил myselft достаточно правильно для этого объяснения, и я надеюсь, что этот ответ поможет вам.
singleton не дает вам столько, просто статический член и экземпляр getter ... может просто реализовать это в классе. – Jonathan
Интересное чтение: http://stackoverflow.com/questions/8036883/can-i-define-an-abstract-class-for-all-derived-singletons-in-this-way?rq=1 – spender
Singleton isn ' t тип объекта, так как он является шаблоном кодирования. Вы используете Singleton, чтобы получить «глобальную» доступность статических объектов, сохраняя при этом все преимущества экземпляров. Нет необходимости создавать класс «Singleton» для реализации такого поведения. – Abion47