2012-05-10 3 views
-4

Я программист asp.net, и у меня есть два приложения, как приложение электронной коммерции, такое как eBay-сайт, а другое - это управление, например, система управления магазином, например, bigbazzar или любой книжный магазин и т. Д.Использование интерфейса и абстрактного класса для конкретного приложения?

Теперь я хотел реализовать интерфейс и абстрактный класс в своих проектах. Я прочитал об абстрактном классе и интерфейсе и знаю мотыгу, чтобы использовать therotically.but, ища реальный мир или практический пример того, что имеет отношение к моему приложений (т. е. для электронной коммерции & управления магазином) У меня есть много искать для примера веб-электронной коммерции и управления, где интерфейсы и абстрактные классы прекрасно используются. Может ли любой орган помочь мне в использовании интерфейса и абстрактного класса, используемого в моем приложении для управления электронной коммерцией &.

Хорошо, если вы можете поделиться любым соответствующим (например, ecomm и store management) приложением или проектом, где используются абстрактный класс и интерфейс, поэтому я могу легко соотнести с моим проектом из-за релевантности.

+2

Этот вопрос кажется слишком открытым. Абстракция не является чем-то специфичным для любого типа проекта, а вместо этого относится к всему дизайну объектной модели. – doogle

+1

Проблема с этим вопросом - ответ, который вы запрашиваете, не поможет. Вы можете знать, как, как вы, похоже, не получили почему. Если у вас есть причины, потенциальные кандидаты в любом приложении будут прыгать на вас. Это не случай, когда вы должны использовать абстракцию, это когда вы должны остановиться ... –

ответ

1

Ваш вопрос очень широк и, как указано в комментарии @doogle, абстрактные классы и интерфейсы не обязательно привязаны к конкретному типу проекта, но основаны на вашем дизайне.

Не зная дизайна приложений электронной коммерции или управления магазином, вы не можете дать какую-либо конкретную помощь, но при чтении одного из ваших более ранних вопросов, похоже, вы пытаетесь понять, как абстрактные классы и интерфейсы могут быть в состоянии помочь вам, поэтому вот базовый пример того, что может указывать на вас в правильном направлении.

В гипотетическом магазине у вас есть тысячи разных продуктов, и вы хотите отслеживать их в своем приложении. Очевидно, что есть вещи, общие для всех продуктов, таких как производитель, цена, отдел, количество, но также и части информации, которые могут быть применимы только к конкретным продуктам (одежда будет иметь размер, но DVD не будет).

Решение может заключаться в создании интерфейса Product, который был бы общим для всех продуктов, но позволял каждому классу реализовывать интерфейс и добавлять свои собственные свойства. Теперь вы можете гарантировать, что любой класс продукта будет иметь, как минимум, эти общие элементы.

Вот гипотетический интерфейс продукта:

Затем вы можете создать абстрактный класс, который реализует IProduct. Вот одежда продукт, который реализует IProduct, но и добавляет Size поля

public abstract class ClothingProduct : IProduct 
{ 
    public string Size { get; set; } 

    public decimal SellingPrice { get; set; } 
    public decimal StoreCost { get; set; } 
    public int QuantityOnHand { get; set; } 
    public string Manufacturer { get; set; } 
    public string DepartmentName { get; set; } 

    // by marking CalculateProfits abstract, you can let every class that inherits 
    // from ClothingProduct decide how to calculate the profit based on the selling 
    // costs of that product 
    public abstract decimal CalculateProfit(); 
} 

Теперь, когда у вас есть ClothingProduct класса, вы могли бы пойти и создать классы для некоторых элементов в хранилище. Вот обувь и рубашки класс:

public class Shirt : ClothingProduct 
{ 
    public override CalculateProfit() 
    { 
     return this.SellingPrice - this.StoreCost - this.CalculateSellingCosts(); 
    } 

    private decimal CaclulateSellingCosts() 
    { 
     // some code that would let you calculate the selling costs and 
     // overhead costs associated with this specific product 
    } 
} 

public class Shoes : ClothingProduct 
{ 
    private const decimal commissionRate = 0.05; 

    public override CalculateProfit() 
    { 
     return this.SellingPrice - this.StoreCost - this.CalculateSellingCosts() - this.CalculateCommission(); 
    } 

    private decimal CaclulateSellingCosts() 
    { 
     // some code that would let you calculate the selling costs and 
     // overhead costs associated with this specific product 
    } 

    private decimal CalculateCommission() 
    { 
     return this.SellingPrice * commissionRate; 
    } 
} 

В конце концов, как Shoes и Shirt являются IProducts, потому что они наследуют от ClothingProduct, который в свою очередь реализует IProduct.

Не могли бы вы создать другие классы или абстрактные классы для других продуктов во всем магазине, но до тех пор, пока инструмент IProduct, вы можете гарантировать, что у них будут все свойства, которые являются частью IProduct.

Где это помогает это можно даже создать коллекцию ваших типов интерфейсов и добавить все продукты к ним, так как все реализовать IProduct

// a hypothetical method that grabs everything (maybe from a database) 
List<IProduct> products = GetAllProducts(); 

// this query would give you the total number of items in your inventory 
var totalItems = products.Select(quant => quant.QuantityOnHand).Sum(); 

// and this would calculate the total value of the products based on the store's cost 
var totalCost = products.Select(quant => quant.StoreCost).Sum(); 

В 2 запросы только придуманные примеры, как это было бы так же, как легко сделайте это в базе данных (если это где-то все в магазине), но я просто сделал это, чтобы дать вам пример того, как привязать все связанные элементы обратно к одному интерфейсу может помочь

Смежные вопросы