常用设计模式之简单工厂(使用反射)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用设计模式之简单工厂(使用反射)相关的知识,希望对你有一定的参考价值。
(回顾自己工作以来参与过的所有项目,其中大部分大量使用框架,因此用到设计模式的场景并不多。可是,对于码农来说,设计模式是必不可少的基本功之一。所以现在重新梳理并简单记录几个设计模式。每个设计模式都有其适合使用的场景。作为码农,在搬砖的过程中,需要根据项目需求,结合各种设计的特点,考虑多方面因素,在满足当前需求的前提下,尽量试想未来可能出现的变化,采用最合适的设计去实现需求,以免未来可能出现的时间精力的浪费。)
-
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 }
以上是关于常用设计模式之简单工厂(使用反射)的主要内容,如果未能解决你的问题,请参考以下文章
深入理解设计模式-策略模式(结合简单工厂反射Spring详细讲解)