How to store / process data available to other classes in C #

I am writing a CAD program. Suppose I have an input class, this class reads various data from a text file and creates many lists / dictionaries and ... This data must be accessible in other ways in other classes that need to be changed. Now here's how I did it so far:

I have one static class: Building.csWhen I create / or load a project, this class contains all the data, such as a list of columns, beams, points, etc. All of them are stored as private fields. I can access them using public class methods like GetColumns or GetPoints ...

Now I also have non-static classes. They contain 2-3 publicly available methods. and do some things on different parts of the building.

public static class Building
{
    private static List<Column> columns;
    private static List<Beams> beams;
    private static List<Points> points;

    public static List<Column> GetColumns() 
    {
        return Columns;
    }
}

public class ColumnsService()
{
    private List<Columns> columns;
    public GroupColumns(List<Columns> columns)
    {
        this.columns = columns;
    }

    public void Group()
    {
        // group columns
    }
}

var columns = Building.GetColumns();
var columnsService = new ColumnsService(columns);
columnsService.Group();

, ? . . .

+4
1

, , Building?

, . , -, "", .

, static. , . , , , . - , , .

, , :

public class Building
{
    // attributes and operations
}

, , ?

.

, - "" . BuildingPrinter - . , Building "". :

public class BuildingPrinter
{
    public void Print(Building building)
    {
        // implementation
    }
}

, , , - "" . -, , . -, BuildingWidget. , :

public class BuildingWidget
{
    private Building currentBuilding;

    private BuildingWidget() { }

    public BuildingWidget(Building building)
    {
        currentBuilding = building;
    }
}

, , , - , . - , , , . .

, , Building? .

: factory . :

public class BuildingFactory
{
    public static Building FetchBuilding(int buildingId)
    {
        // implementation
    }
}

factory . , , (, ). factory (, 5 10 - ). ( factory , , . , , BuildingFactory BuildingRepository).

factory , , , Building .

, , :

public class BuildingRepository
{
    public Building GetBuilding(int buildingId)
    {
        // fetch from database
    }

    public Building SaveBuilding(Building building)
    {
        // save to database, return updated version
    }
}

, , / . factory , . - , , ( ).

+7

Source: https://habr.com/ru/post/1568342/


All Articles