Factory Method là gì

Tag: What Is Factory Class In Java Là Gì

Các các bạn vẫn lúc nào nghe về Virtual Constructor?Factory method pattern là gì mà lại được thực hiện các trong số tlỗi viện của Java vậy?Học giải pháp viết code một biện pháp có hệ thống với factory method.

Bạn đang xem: Factory pattern là gì

Hãy tìm hiểu thêm bài viết này nhé

Ở bài trước họ sẽ khám phá về singleton pattern. Trong bài xích này mình sẽ giúp đỡ các bạn tham khảo thêm về một pattern khác vào nhóm Creational pattern - Factory Method. Các thắc mắc sẽ tiến hành vấn đáp vào post này

Giới thiệu nlắp gọn gàng về factory methodVấn đề và cách giải quyết bằng factory methodImplement như thế nào?

Thế nào là 1 trong những factory method

Định nghĩa theo wiki

Define an interface for creating an object, but let subclasses decide which class to lớn instantiate. The Factory method lets a class defer instantiation it uses to lớn subclasses.

Tóm lại nói tới factory method ta phải biết:

Factory method là 1 trong những pattern nằm trong nhóm creational patterns. Định nghĩa interface góp client chế tạo object tuy vậy ủy quyền cho các concreate factory để xác minh class làm sao được trả về cho client. Được sử dụng với mục đích

Đưa toàn cục lô ghích của câu hỏi chế tạo ra new object vào trong factory, bịt giấu ngắn gọn xúc tích của bài toán khởi tạoGiảm sự nhờ vào nhằm mục tiêu tăng tính mở rộng

Vì gần như điểm sáng trên nên factory pattern thường xuyên được sử dụng trong số thỏng viện (người tiêu dùng đã có được mục tiêu tạo nên bắt đầu object cùng không đề xuất quyên tâm mang lại bí quyết nó được tạo thành ra)

Cụ thể cố làm sao họ hãy đọc ví dụ bên dưới đây

Đặt vấn đề

Giả sử bạn đề xuất viết ứng dụng cho trung trung ương giống cây xanh phân phát tương đương những chưng dân cày nhờ vào vị trí thửa khu đất của họ. Biết phần mềm vẫn vận dụng mang đến 2 Khu Vực là Tây nguyên ổn cùng đồng bằng Sông Cửu Long. Với tiêu chí

Tây nguyên: có thể chấp nhận được chọn bất kỳ cây công nghiệp nào trong danh sách: Cà phê, tiêu, cao su thiên nhiên.Đồng bằng sông Cửu Long: được cho phép lựa chọn tuần tự những cây nạp năng lượng trái trong danh sách: Cam, Xoài, Nhãn, Sầu riêng rẽ.

Yêu cầu 1: Tiêu chí chọn lựa biến hóa mang lại đồng bởi sông Cửu Long, không tác động mang lại súc tích cách xử lý tiêu chuẩn chọn lọc của Tây Nguyên với trở lại. Ví dụ đồng bằng sông Cửu Long trong năm này ước ao tăng số lượng tương tự cho Sầu riêng biệt lên 1/2 số giống như được giao cho nông dân.

Yêu cầu 2: Trong ngôi trường hòa hợp người sử dụng hy vọng không ngừng mở rộng Thị Phần ra các khoanh vùng không giống như: Đồng bởi sông Hồng, vùng núi Đông Bắc, vùng ngập mặn ven biển, … Phần mềm hoàn toàn có thể mở rộng nhưng ko ảnh hưởng cho logic của các khu vực trước đó.

Giải quyết vấn đề

Phân tích một ít, các loại như thể bên trên đa số rất có thể Hotline thông thường bằng một interface là Giống. Nếu xử trí bài toán sinh sản bắt đầu cùng với interface này ráng vì chưng một các loại giống ví dụ, ta rất có thể tiện lợi không ngừng mở rộng thêm new những loại giống như khác vào tương lại

Tương từ, trường hợp ta có thể tư tưởng một Factory tổng quát phụ trách việc tạo mới như thể cây xanh mang lại từng Quanh Vùng, vấn đề thêm 1 Quanh Vùng cùng với tiêu chí sàng lọc tương đương không giống đã trsinh sống bắt buộc dễ dãi hơn không hề ít. Như vậy, bạn có thể xây dựng nhỏng sau

Factory Method là gì

GiongCayTrongFactory là một interface factory tổng thể bao gồm chứa cách thức chonGiong() sẽ giúp đỡ các bác dân cày tuyển lựa giống phù hợp

TayNguyenFactory & DBSongCuuLongFactory là 2 subclass extend từ bỏ GiongCayTrongFactory, cho nên vì thế, 2 subclass này có quyền customize lại tiêu chí lựa chọn tương tự đến từng khu vực.

Giong là một trong interface tổng quát

7 class implement interface này gồm những: CaPhe, Tieu, CaoSu, Cam, Xoai, Nhan, SauRieng

do đó, ta sẽ có thể giải quyết vụ việc được đề ra

Yêu cầu 1:Đồng bởi sông Cửu Long trong năm này ước ao tăng con số tương tự mang lại Sầu riêng biệt lên 50% số kiểu như được giao mang lại dân cày.

Chúng ta chỉ cần sửa lại hàm chonGiong() của DBSongCuuLongFactory nhưng mà ko cần chỉnh lô ghích của TayNguyenFactory

Yêu cầu 2:Trong ngôi trường vừa lòng quý khách hàng ước ao không ngừng mở rộng Thị Phần ra các khoanh vùng khác như: Đồng bằng sông Hồng, vùng núi Đông Bắc, ...

Xem thêm: Foc Là Gì ? Foc Trong Khách Sạn Nghĩa Là Gì? Các Dịch Vụ Foc Trong Khách Sạn

Chúng ta sẽ tạo nên thêm DBSongHongFactory, VungNuiDongBacFactory và implement thủ tục chonGiong() của GiongCayTrongFactory

Cách cách xử trí này cũng biểu hiện ích lợi của bài toán theo đúng nguyên ổn tắcOpen/Closed principle (OCP) - một Một trong những cách thức SOLID principal, vấn đề thêm gần như lô ghích mới trlàm việc phải dễ dàng và đơn giản hơn lúc nào không còn.

Cách thức implement

Tạo Giống interface với các một số loại giống implement interface nàyTạo các Factory cùng implement logic xử trí mang lại 2 factory theo đề bài xích yêu cầuTạo Giống interface với các các loại giống như implement interface này

// Interface Giống tổng quátpublic interface Giong public String showTenGiong();// Cà phêpublic class CaPhe implements Giong
Overridepublic String showTenGiong() return "Tiêu";// Cao Supublic class CaoSu implements Giong
Overridepublic String showTenGiong() return "Xoài";// Sầu riêngpublic class SauRieng implements Giong
Overridepublic String showTenGiong() return "Sầu Riêng";

Tạo GiongCayTrongFactory & 2 concreate factory TayNguyenFactory cùng DBSongCuuLongFactory

GiongCayTrongFactory hỗ trợ 1 factory method bao quát với mục đích giúp các chưng dân cày chắt lọc giống

public interface GiongCayTrongFactory public Giong chonGiong();Với TayNguyenFactory, từng trải đặt ra là chỉ cho phép lựa chọn ngẫu nhiên cây lâu năm nào trong danh sách: Cà phê, tiêu, cao su đặc. Vì yêu cầu chỉ cần ngẫu nhiên một trong những 3 loại cây lâu năm đề xuất chúng ta cũng có thể random với trả về thiên nhiên 1 một số loại kiểu như.

public class TayNguyenFactory implements GiongCayTrongFactory
Overridepublic Giong chonGiong() Random chonGiongNgauNhien = new Random(3);switch (chonGiongNgauNhien.nextInt()) case 0:return new CaPhe();case 1:return new Tieu();case 2:return new CaoSu();default:return null;Đồng bởi sông Cửu Long bao gồm sự cân đối trong list như là hơn, họ yêu cầucó thể chấp nhận được chọn tuần tự các cây ăn uống trái trong danh sách: Cam, Xoài, Nhãn, Sầu riêng biệt.

public class DBSongCuuLongFactory implements GiongCayTrongFactory private int count = 0;
Overridepublic Giong chonGiong() switch (count) case 0:count ++;return new Cam();case 1:count ++;return new Xoai();case 2:count ++;return new Nhan();case 3:count = 0;return new SauRieng();default:count = 0;return null;Kiểm tra kết quả

public class TestFactoryMethod {public static void main(String<> args) {System.out.println("Chọn giống như mang đến 12 nông dân sinh sống Tây Nguyên");GiongCayTrongFactory tayNguyenFactory = new TayNguyenFactory();for (int i = 1; i Output

Chọn kiểu như mang lại 12 nông dân cư Tây NguyênNguời lần đầu tiên nhận ra giống của Cà phêNguời thứ hai nhận được giống của TiêuNguời vật dụng 3 nhận thấy như là của TiêuNguời trang bị 4 nhận thấy tương đương của Cao SuNguời máy 5 nhận ra kiểu như của Cà phêNguời đồ vật 6 nhận ra như thể của Cao SuNguời trang bị 7 nhận được như thể của Cao SuNguời máy 8 nhận ra tương tự của Cà phêNguời máy 9 cảm nhận kiểu như của Cà phêNguời vật dụng 10 nhận thấy kiểu như của Cao SuNguời thứ 11 cảm nhận tương đương của Cà phêNguời máy 12 nhận thấy giống như của Cao Su-----Chọn giống như mang đến 12 nông người ở Đồng bằng sông Cửu LongNguời trước tiên nhận được như thể của CamNguời thứ hai cảm nhận giống của XoàiNguời thiết bị 3 nhận ra tương tự của NhãnNguời thiết bị 4 nhận ra như thể của Sầu RiêngNguời thứ 5 nhận ra kiểu như của CamNguời trang bị 6 nhận ra kiểu như của XoàiNguời thứ 7 nhận thấy tương đương của NhãnNguời thiết bị 8 nhận thấy như là của Sầu RiêngNguời thiết bị 9 nhận ra giống như của CamNguời thứ 10 cảm nhận như thể của XoàiNguời sản phẩm 11 nhận ra giống của NhãnNguời máy 12 cảm nhận tương tự của Sầu RiêngTa rất có thể thấy 12 nông người ở Tây Nguim nhận được như thể một cách tự nhiên trong 3 một số loại giống cây lâu năm. Ngược lại, nông dân cư đồng bằng sông Cửu Long nhận ra loài cây ăn uống trái một giải pháp tuần trường đoản cú.

Tổng kết

Hi vọng sau bài bác post này, những chúng ta có thể cầm cố được factory method là gì, vấn đề và biện pháp xử lý thông qua phương pháp áp dụng factory method.

Factory methodcùng với Abstract factory được sử dụng thông dụng trong các thỏng viện của Java, các chúng ta cũng có thể tham khảo thêm như

java.util.Calendar#getInstance()java.util.ResourceBundle#getBundle()java.text.NumberFormat#getInstance()java.nio.charphối.Charset#forName()java.net.URLStreamHandlerFactory#createURLStreamHandler(String)java.util.EnumSet#of()javax.xml.bind.JAXBContext#createMarshaller()

Các chúng ta có thắc mắc, góp ý về bài viết hãy phản hồi dưới cho doanh nghiệp biết nhé.

Xem thêm: Hướng Dẫn Cách Chơi Và Luật Và Cách Chơi Bóng Rổ Cơ Bản, Luật Bóng Rổ Cơ Bản

Nếu các bạn có nhu cầu bản thân share về lý lẽ SOLID thì cũng phản hồi phía bên dưới nhé. Mình đã sắp xếp làm một các loại bài xích tuy vậy tuy nhiên với các loại bài xích về kiến thiết pattern này.