Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.10.06;
Скачать: CL | DM;

Вниз

Нужен третейский судья :)   Найти похожие ветки 

 
_oxffff   (2013-04-24 16:05) [200]

Удалено модератором


 
Inovet ©   (2013-04-24 16:06) [201]

Удалено модератором


 
DevilDevil ©   (2013-04-24 16:07) [202]

Удалено модератором


 
Ega23 ©   (2013-04-24 16:07) [203]


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


Есть юнит с контролом, есть юнит с функцией Register. Сплошь и рядом.


 
euru ©   (2013-04-24 16:07) [204]


> _oxffff   (24.04.13 15:32) [185]

А чем реализация через абстрактный класс лучше реализации через интерфейс?

Из недостатков:
1.
var Stuff: TStuff;
. . .
Stuff := TStuff.GetInstance;
. . .
Stuff.Free;

Если этот синглтон хранит состояния, то они будут потеряны.

2. Насколько я помню, такой код не откомпилируется в D7.


 
Компромисс1 ©   (2013-04-24 16:08) [205]

Удалено модератором


 
Компромисс1 ©   (2013-04-24 16:09) [206]

Ega23 ©   (24.04.13 16:07) [203]

Да, точно. Спасибо. Я уже и забыл, как компоненты регистрировал.


 
DevilDevil ©   (2013-04-24 16:11) [207]

> _oxffff   (24.04.13 16:02) [197]
> Если ты хочешь выбирать разные режимы сборки своего приложения
> в compile time, то естественно define.
> Если ты хочешь выбирать разные режимы в run-time, то реализуй
> соответствующий подход(например один из паттернов).
>
> Синглетон то здесь причем?


если возвращаться к [0]
то Розыч спутал причину со следствием
он счёт define своего рода реализацией синглетона
на самом деле define - это режим в рамках которого есть синглетон


 
_oxffff   (2013-04-24 16:15) [208]


> euru ©   (24.04.13 16:07) [204]
>
> > _oxffff   (24.04.13 15:32) [185]
>
> А чем реализация через абстрактный класс лучше реализации
> через интерфейс?


Собственно я не рассматривал вопрос в такой постановке. :)
Я просто поставил задачу внести реализацию в namespace класса

P.S. Что касаемо Вашего кода, то время жизни объекта тоже вызывает вопросы. ;)


 
Аббат Пиккола   (2013-04-24 16:15) [209]

Удалено модератором


 
DevilDevil ©   (2013-04-24 16:16) [210]

Удалено модератором


 
Компромисс1 ©   (2013-04-24 16:19) [211]


> может (а следовательно, и должен)


Мне кажется, тут есть логическая ошибка.
С остальным согласен :)


 
Inovet ©   (2013-04-24 16:21) [212]

Удалено модератором


 
Аббат Пиккола   (2013-04-24 16:21) [213]

Удалено модератором


 
Компромисс1 ©   (2013-04-24 16:26) [214]

Удалено модератором


 
DevilDevil ©   (2013-04-24 16:31) [215]

> Аббат Пиккола   (24.04.13 16:21) [213]

а мне кстати в таком виде не нравятся синглетоны
в С++ хотябы можно скрыть автоматическую проверку на NULL, и для программиста это будет обычная переменная с обычным обращением

а вот обращение по функции мне кажется некрасиво
мне ближе объявление глобальной переменной и вызов InitializeMainFoo() например


 
Аббат Пиккола   (2013-04-24 16:41) [216]

Удалено модератором


 
DevilDevil ©   (2013-04-24 16:43) [217]

> Аббат Пиккола   (24.04.13 16:41) [216]

а глобальная функция вместо переменной кто ? )


 
Юрий Зотов ©   (2013-04-24 16:44) [218]

Удалено модератором


 
Аббат Пиккола   (2013-04-24 16:52) [219]

Удалено модератором


 
DevilDevil ©   (2013-04-24 16:53) [220]

Удалено модератором


 
DevilDevil ©   (2013-04-24 16:56) [221]

Удалено модератором


 
Аббат Пиккола   (2013-04-24 16:56) [222]

Удалено модератором


 
Компромисс1 ©   (2013-04-24 16:57) [223]

Удалено модератором


 
euru ©   (2013-04-24 17:00) [224]


> _oxffff   (24.04.13 16:15) [208]
> Я просто поставил задачу внести реализацию в namespace класса

unit Unit1;

interface

type
  ISingleton = interface
  end;

type
  TSingleton = class(ISingleton)
  private
    class var Instance: TSingleton;
    constructor Create;
  public
    class function GetInstance: ISingleton;
  end;

implementation

class function TSingleton.GetInstance: ISingleton;
begin
  if TSingleton.Instance = nil then
    TSingleton.Instance = TSingleton.Create;
  Result := TSingleton.Instance;
end;

finalization
  if TSingleton.Instance <> nil then
    TSingleton.Instance.Free;
end.



> Что касаемо Вашего кода, то время жизни объекта тоже вызывает вопросы. ;)
А что не так со временем жизни объекта?


 
Компромисс1 ©   (2013-04-24 17:00) [225]

Удалено модератором


 
DevilDevil ©   (2013-04-24 17:00) [226]

Удалено модератором


 
Аббат Пиккола   (2013-04-24 17:04) [227]

2 DevilDevil ©   (24.04.13 16:56) [221]

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

Возможно, если бы я производил библиотеки, я бы осторожнее обращался с этими вещами. Вот, например, глобальная функция Printer. Подозреваю, что это как раз и есть синглетон:

function Printer: TPrinter;
begin
 if FPrinter = nil then FPrinter := TPrinter.Create;
 Result := FPrinter;
end;

function SetPrinter(NewPrinter: TPrinter): TPrinter;
begin
 Result := FPrinter;
 FPrinter := NewPrinter;
end;


Кстати, а почему бы не решить проблему данной ветки таким вот испытанным способом?

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


 
Компромисс1 ©   (2013-04-24 17:06) [228]

Удалено модератором


 
Аббат Пиккола   (2013-04-24 17:08) [229]

В модуле Printers VCL есть синглетон Printer и функция
function SetPrinter(NewPrinter: TPrinter): TPrinter,

позволяющая заменить класс внутренней переменной FPrinter на любой TFoo2, если он наследует классу TPrinter.

Это не то, что надо?


 
Inovet ©   (2013-04-24 17:08) [230]

Удалено модератором


 
DevilDevil ©   (2013-04-24 17:11) [231]

Удалено модератором


 
DevilDevil ©   (2013-04-24 17:13) [232]

Удалено модератором


 
Компромисс1 ©   (2013-04-24 17:15) [233]

Удалено модератором


 
Аббат Пиккола   (2013-04-24 17:25) [234]

Удалено модератором


 
DevilDevil ©   (2013-04-24 17:25) [235]

Удалено модератором


 
Ega23 ©   (2013-04-24 17:37) [236]

Удалено модератором


 
Аббат Пиккола   (2013-04-24 17:38) [237]

Удалено модератором


 
Inovet ©   (2013-04-24 17:38) [238]

Удалено модератором


 
Аббат Пиккола   (2013-04-24 17:56) [239]

Удалено модератором


 
Ega23 ©   (2013-04-24 17:57) [240]

Удалено модератором



Страницы: 1 2 3 4 5 6 7 вся ветка

Текущий архив: 2013.10.06;
Скачать: CL | DM;

Наверх




Память: 1.07 MB
Время: 0.049 c
6-1269649035
defen
2010-03-27 03:17
2013.10.06
демодуляция сигнала с GMSK модуляцией


2-1358348219
lordalexander
2013-01-16 18:56
2013.10.06
Сровнение Мемо


2-1358365235
lordalexander
2013-01-16 23:40
2013.10.06
не могу понять почему ошибка


15-1367219106
O'ShinW
2013-04-29 11:05
2013.10.06
Нарочно не придумаешь..


15-1366800820
w666w
2013-04-24 14:53
2013.10.06
Подскажите где найти толкового фрилансера?