Architechture 3
1. entities package: here we create classes of products.
a) abstracts
package main.entities.abstracts;
public interface Entity {
}
b) concretespackage main.entities.concretes;
import main.entities.abstracts.Entity;
public class Product implements Entity {
private int id;
private int categoryId;
private String name;
private double unitPrice;
private int unitsInStock;
public Product() {
}
public Product(int id, int categoryId, String name, double unitPrice, int unitsInStock) {
this.id = id;
this.categoryId = categoryId;
this.name = name;
this.unitPrice = unitPrice;
this.unitsInStock = unitsInStock;
}
public int getId() {
return id;
}
public Product setId(int id) {
this.id = id;
return this;
}
public int getCategoryId() {
return categoryId;
}
public Product setCategoryId(int categoryId) {
this.categoryId = categoryId;
return this;
}
public String getName() {
return name;
}
public Product setName(String name) {
this.name = name;
return this;
}
public double getUnitPrice() {
return unitPrice;
}
public Product setUnitPrice(double unitPrice) {
this.unitPrice = unitPrice;
return this;
}
public int getUnitsInStock() {
return unitsInStock;
}
public Product setUnitsInStock(int unitsInStock) {
this.unitsInStock = unitsInStock;
return this;
}
}2. dataAccess package: here we create classes that connect with DB.a) abstractspackage main.dataAccess.abstracts;
import main.entities.concretes.Product;
import java.util.List;
public interface ProductDao {
void add(Product product);
void update(Product product);
void delete(Product product);
Product get(int id);
List<Product> getAll();
}b) concretespackage main.dataAccess.concretes;
import main.dataAccess.abstracts.ProductDao;
import main.entities.concretes.Product;
import java.util.List;
public class HibernateProductDao implements ProductDao {
@Override
public void add(Product product) {
System.out.println("Hibernate ile eklendi: " + product.getName());
}
@Override
public void update(Product product) {
}
@Override
public void delete(Product product) {
}
@Override
public Product get(int id) {
return null;
}
@Override
public List<Product> getAll() {
return null;
}
}package main.dataAccess.concretes;
import main.dataAccess.abstracts.ProductDao;
import main.entities.concretes.Product;
import java.util.List;
public class AbcProductDao implements ProductDao {
@Override
public void add(Product product) {
System.out.println("Abc ile eklendi: " + product.getName());
}
@Override
public void update(Product product) {
}
@Override
public void delete(Product product) {
}
@Override
public Product get(int id) {
return null;
}
@Override
public List<Product> getAll() {
return null;
}
}3. some external classes: here might be some classes that do some logical things(generallywritten by other developers) that we want to integrate to our system.package main.jLogger;
public class JLoggerManager {
public void log(String message) {
System.out.println("J logger ile loglandi " + message);
}
}4. core package: this package specifically for external classes that we want to use. This isthe best practice to use external classes implementing this way.a) abstractpackage main.core.abstracts;
public interface LoggerService {
void logToSystem(String message);
}b) concretespackage main.core.concretes;
import main.core.abstracts.LoggerService;
import main.jLogger.JLoggerManager;
public class JLoggerManagerAdapter implements LoggerService {
@Override
public void logToSystem(String message) {
JLoggerManager manager = new JLoggerManager();
manager.log(message);
}
}5. business package: this package is for connecting kind of client with our system. We shouldnot write logis inside dataAccess. This is best practice to do it inside business package.a) abstractspackage main.business.abstracts;
import main.entities.concretes.Product;
import java.util.List;
public interface ProductService {
void add(Product product);
List<Product> getAll();
}b) concretespackage main.business.concretes;
import main.business.abstracts.ProductService;
import main.core.abstracts.LoggerService;
import main.dataAccess.abstracts.ProductDao;
import main.entities.concretes.Product;
import java.util.List;
public class ProductManager implements ProductService {
private ProductDao productDao;
private LoggerService loggerService;
public ProductManager(ProductDao productDao, LoggerService loggerService) {
this.productDao = productDao;
this.loggerService = loggerService;
}
@Override
public void add(Product product) {
if (product.getCategoryId() == 1) {
System.out.println("Bu kategoride urun kabul edilmiyor");
return;
}
this.productDao.add(product);
this.loggerService.logToSystem("urun eklendi: " + product.getName());
}
@Override
public List<Product> getAll() {
return null;
}
}

Комментарии
Отправить комментарий