首页 > 代码库 > 常用设计模式之简单工厂(使用反射)

常用设计模式之简单工厂(使用反射)

(回顾自己工作以来参与过的所有项目,其中大部分大量使用框架,因此用到设计模式的场景并不多。可是,对于码农来说,设计模式是必不可少的基本功之一。所以现在重新梳理并简单记录几个设计模式。每个设计模式都有其适合使用的场景。作为码农,在搬砖的过程中,需要根据项目需求,结合各种设计的特点,考虑多方面因素,在满足当前需求的前提下,尽量试想未来可能出现的变化,采用最合适的设计去实现需求,以免未来可能出现的时间精力的浪费。)

  • UML

技术分享

 

  • Code

 1 interface Product{
 2     void doSth(String name);
 3 }
 4 class Factory{
 5     private Factory(){}
 6     //public static Product newInstance(Class<? extends Product> cls)
 7     public static Product newInstance(String className)
 8     {
 9         Product product = null;
10         try{
11             //product =  cls.getConstructor().newInstance();
12             product = (Product)Class.forName(className).newInstance();
13         }catch (Exception e){
14             e.printStackTrace();
15         }
16         return product;
17     }
18 }
19 class ProductX implements Product{
20     //public ProductX(){}
21     public void doSth(String name){
22         System.out.println("-----ProductX -------" + name);
23     }
24 }
25 class ProductY implements Product{
26     //public ProductY(){}
27     public void doSth(String name){
28         System.out.println("-----ProductY -------" + name);
29     }
30 }
31 public class DesignPatternsTest{
32     public static void main(String[] args) throws Exception{
33         //Product p1 = Factory.newInstance(ProductX.class);
34         Product p1 = Factory.newInstance("com.wrb.designpatterns.ProductX");
35         //ProductY p2 = (ProductY)Factory.newInstance(ProductY.class);
36         ProductY p2 = (ProductY)Factory.newInstance("com.wrb.designpatterns.ProductY");
37         p1.doSth("p1");
38         p2.doSth("p2");
39     }
40 }

 

常用设计模式之简单工厂(使用反射)