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

本文介绍了设计模式中的简单工厂模式,并通过使用Java反射机制来实现动态创建对象的过程。作者强调了设计模式在软件开发中的重要性,同时给出了具体的代码示例。

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

  • 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 }

 

posted on 2016-11-16 23:04 王仁彪 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/renbiao/p/6071950.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值