Posts

Showing posts from August, 2014

The WeakReference class, monitoring memory leak and garbage collection in a Java application

Image
 Below is a Stack implementation that uses an internal resizeable array structure.  public class MyStack< T > implements Stack< T > { private static final int CAPACITY = 100 ; private Object[] array ; private int pos = 0 ; public MyStack () { this . array = new Object[ CAPACITY ] ; } @Override public void push ( T item) { if ( pos >= array . length / 2 ) { Object[] newArray = new Object[ pos * 2 ] ; System. arraycopy ( array , 0 , newArray , 0 , array . length ) ; array = newArray ; } array [ pos ++] = item ; } @Override public T pop () { if (isEmpty()) { throw new RuntimeException( "empty stack" ) ; } @SuppressWarnings ( "unchecked" ) T item = ( T ) array [ pos - 1 ] ; pos -= 1 ; return item ; } @Override @SuppressWarnings ( "unchecked" ) public T peek...

Decorator Tasarım Kalıbını Hatırlayalım

Bir sınıfın gerçekleştirebileceği işlemleri arttırmak için türetmeden yararlanabiliriz. Fakat türetme (subclassing), birçok dilde derleme aşamasında yapılabilen bir özellik. İşte Decorator kalıbı, dinamik olarak bir sınıfa yeni görevler verebilmemizi sağlıyor. Burada yaptığımız şey, bir sınıfa değil de bir nesneye yeni işlevsellik kazandırmak oluyor. Bu fikri daha iyi anlayabilmek için aşağıdaki basit örneğe bakalım: public class Program {     public static void main(String[] args) {         new TextField().draw();         TextField decoratedTextField = new TextField();         new ColorDecorator(new BorderDecorator(decoratedTextField)).draw();     } } public interface VisualComponent {     void draw(); } public class TextField implements VisualComponent {     @Override     public void draw() {         System.out.println("TextFiel...

Visitor Tasarım Kalıbını Hatırlayalım

Visitor kalıbına hangi durumda ihtiyaç duyabiliriz? Bir nesne yapısı üzerinde işlemler yapmak istiyoruz ve bu işlemlerin üzerinde çalıştığı nesne yapısından bağımsız olarak çeşitlenmesini istiyoruz. Bu durumda Visitor kalıbı işimize yarayabilir. Aşağıdaki örnekte bir arabanın parçaları üzerinde clean ve repair işlemleri yapılıyor: public interface CarElement {     void accept(CarElementVisitor visitor); } public interface CarElementVisitor {     void visit(Engine engine);     void visit(Wheel wheel); } public class Car implements CarElement {     private Engine engine;     private List wheels;     public Car(Engine engine, Wheel... wheels) {         this.engine = engine;         this.wheels = Arrays.asList(wheels);     }     @Override     public void accept(CarElementVisitor visitor) {         engine....

Popular posts from this blog

Trie Data Structure and Finding Patterns in a Collection of Words

My Crappy Looking Solution to "Binary Tree Common Ancestor" Problem

A Graph Application in Java: Using WordNet to Find Outcast Words