2012-01-08 16 views
8

spring tutorial izliyorum. bölümdeBu bahar eğitiminde kötü uygulama?

ProductManager oluşturulan bir arayüz "3,2 iş mantığı için bazı sınıfları ekleyin.": Sonra SimpleProductManager uygulama sınıfı oluşturulduğunda

package springapp.service; 

import java.io.Serializable; 
import java.util.List; 

import springapp.domain.Product; 

public interface ProductManager extends Serializable{ 

    public void increasePrice(int percentage); 

    public List<Product> getProducts(); 

} 

:

package springapp.service; 

import java.util.List; 

import springapp.domain.Product; 

public class SimpleProductManager implements ProductManager { 

    public List<Product> getProducts() { 
     throw new UnsupportedOperationException(); 
    } 

    public void increasePrice(int percentage) { 
     throw new UnsupportedOperationException();   
    } 

    public void setProducts(List<Product> products) { 
     throw new UnsupportedOperationException();   
    } 

} 

uygulama sınıfı fazladan ekler yöntem setProducts(). ProductManager arabiriminde setProducts yönteminin setProducts yöntemini kullanarak SimpleProductManager örneğini polimorfik olarak başlatması gerekir. Şu anda bu mümkün değil - bu arabirim (muhtemelen bir MVC denetleyicisi) müşterileri aramak gerekiyordu çünkü arayüz setProducts içermez

ProductManager p = new SimpleProductManager(); 
p.setProducts(); 

cevap

7

. Arabirim, yalnızca uygulamanın gerçekleştirebileceği tüm yöntemleri tanımlamak yerine, istemcilerin kullanması gereken işlemleri tanımlar. setProducts yöntemine göre, fasulye konfigürasyonuna erişilebilir (örneğin, <property name="products"> kullanarak), ürünlerin başlangıçta statik olarak yapılandırılmasını sağlar. Bundan sonra, istemci kodu, kısıtlı arayüzüyle fasülyeye atıfta bulunur. p.setProducts() Örneğiniz, bu örnekte hiçbir zaman çağrılmamalıdır, çünkü ürünler iş mantığı ile değil, yalnızca fasulye yapılandırmasında yapılandırılmıştır.

İlgili konular