2013-12-06 5 views
3

Я не эксперт по Java, но мне любопытно. Предположим, что у меня есть это:Замена OOP-кода только файлом функций (SP вместо OOP)

String StringRepeater(String s, Qty q) { 
    String S = ""; 
    for(int i = 0; i<q;i++) { 
     S +=s; 
    } 
    return S; 
} 

boolean MyComp(int a, int b) { 
    return (a<b); 
} 

Я хочу заменить код перед кодом на соответствующий код Java. Я не хочу использовать статический класс.

Возможно реализовать его, но не используя статический класс/singleton, я прочитал, что Java позволяет реализовать этот код (отличный от OOP) в структурированное программирование возможно (Википедия).

+0

Из любопытства, что именно является 'Струнный StringRepeater (..)'? Я знаю, что это метод, потому что у вас есть тип возврата. Отсутствие 'private' /' public' меня немного сбивает с толку. – theGreenCabbage

+1

Private/Public принадлежит OOP Concepts, я хочу реализовать это без класса, функция (а не методы) - пример функций, которые что-то делать ... –

ответ

1

Если у вас нет побочных эффектов или изменяемого состояния, тогда нет ничего плохого в использовании статического метода. См. Класс java.lang.Math для примера.

Это может выглядеть следующим образом:

public final class Util { // final disallows inheritance 

    private Util() {} // making constructor private disallows instantiating this 

    public static String repeat(String s, int times) { 
     StringBuilder builder = new StringBuilder(""); 
     for (int i = 0; i < times; i++) { 
      builder.append(s); 
     } 
     return builder.toString(); 
    } 
} 

Это обычно не-OO процедурный подход. Java не имеет возможности создавать независимые функции, не относящиеся к классу.

Вы можете использовать этот статический метод и создать для него функцию EL (см. this answer). и это даст вам функцию, которую вы могли бы вызвать в JSP. Или вы можете вызвать метод в контроллере и заполнить атрибут request с возвращаемым значением.

+0

Разве это не совсем то, что требуется? * ", но не используя статический класс/singleton" * – Bart

+0

@Bart: трудно сказать, вопрос может быть более ясным. OP, похоже, хочет не-ООП, «структурированное программирование» способ создания функции, которую он может вызывать из своего jsp. ответ объясняет, что он не может обойтись без класса и предлагает создать функцию EL, которая позволила бы ему создать нужную ему функцию. поэтому я думаю, что он обращается к тому, что ему нужно. –

0

Возможно реализовать его, но не используя статический класс/синглтон, я читал, что Java позволяет реализовать этот код (отличный от ООП) в структурированном программировании (Wikipedia).

Другой способ реализации «Структурная программирование» В java используется JNI. Используя JNI, вы можете передавать Java-приложения с модулями, написанными на других языках (C, C++, Python, Javascript ...). Это сложно, но нужно несколько раз.

Посмотрите эти ссылки:

http://www.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html

Can I call Java from Node.js via JNI and how?

С уважением,

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