码迷,mamicode.com
首页 > 其他好文 > 详细

OOAD之创建型模式之工厂模式

时间:2015-07-11 01:03:57      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

 

首先我们为什么要学习设计模式呢?

1)模式从经验中总结出来的,经过证实的方案,模式只有在实际系统中经过多次验证之后才能成为模式. 

2) 提高系统的可维护性, 通过使用设计模式,在系统面临升级和维护时,将把维护成本控制在最低的水平上.
3) 增加表达能力: 设计模式有很强的语言表述性. 设计模式是对解决方案的总结,使得设计模式能够更好的传达和交流,成为开发人员之间的一种共通语言,从而被更多的开发人员使用,反过来促进设计模式的发展和应用.
4)帮助我们更好的进行软件设计.

1 模式的概念:是具有代表性的重复性问题及其解答方案. 

模式包含的要素:模式的名称  该模式所能解决的问题  解决方案  使用该模式后的效果

   工厂模式

定义:工厂模式就是集中创建实例对象 

使用工厂模式的好处:

1)客户类和实现类分开。消费者任何时候需要某种产  品,只需向工厂请求即可。消费者无须修改就可以接纳新产品

2)对象的创建由工厂来完成, 类之间的耦合大大减少,变成为类和工厂之间的耦合了.

3)对象的创建和使用分离,达到解耦合的目的。
一:简单工厂模式
eg:工厂生产水果  需要生产苹果,香蕉,梨子
我们需要建立 苹果类,香蕉类,他们都有一个共同的行为就是生产,所以我们需要把它们共同的行为抽出来。
写一个最简单的代码:
 
1 public interface Fruit {
2     
3     public void showInfo();
4 
5 }

 

 1 public class Banana implements Fruit{
 2 //香蕉类    
 3       public void showInfo(){
 4           System.out.println("我是一个香蕉");
 5       }
 6 
 7 }
 8 
 9 //苹果类
10 public class Apple implements Fruit {
11     
12     public void showInfo(){
13         System.out.println("我是一个苹果");
14     }
15 
16 }
17 
18 //梨子类
19 public class Pear  implements Fruit{
20 
21     @Override
22     public void showInfo() {
23         
24         System.out.println("我是一个梨子");
25     }
26 
27 }
 1 public class SimpleFactory {
 2     
 3      public  Apple getApple(){
 4           return new Apple();
 5       }
 6       
 7       public Banana getBanana(){
 8           return new Banana();
 9       }
10      }
11     

 

 
 1 public class Test {
 2 
 3     public static void main(String[] args)  {
 4         
 5         
 6        Fruit a = new Apple();
 7         Fruit b = new Banana()    
 8        a.showInfo();
 9       b.showInfo();
10     }
11     
12 }

 如果需要生产梨子,橘子等等其他的水果的话,就需要建立很多的水果类,并且在SimpleFactory需要写得到各种水果的方法,在客户端还需要new各种水果的对象,这样对于开闭原则支持不够!还是根据情况来设计模式!

二:工厂方法模式
定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化委托给子类
还是以水果工厂为例:
我们需要建立      有一个水果接口,里面存在一个生产水果的方法.     苹果类.    苹果工厂生产苹果的类实现一个工厂生产水果的接口, 一个工厂生产水果的接口。客户端
建立一种水果的代码:
 1 //水果接口
 2 public interface Fruit {
 3     
 4     public void showInfo();
 5 
 6 }
 7 
 8 
 9 //苹果类实现水果接口
10 public class Apple implements Fruit {
11     
12     public void showInfo(){
13         System.out.println("我是一个苹果");
14     }
15 
16 }
17 
18 
19 //工厂得到水果接口
20 public interface IFactoryMethod {
21 
22      public Friut getFruit();
23       
24 }
25 
26 
27 //苹果工厂实现得到水果接口
28 
29 public class AppleFactroy implements IFactoryMethod {
30 
31     @Override
32     public Fruit getFruit() {
33         return new Apple();
34     }
35 
36 }
37 
38 //客户端
39 public class Test {
40 
41     public static void main(String[] args){
42         
43     IFactoryMethod fm = new AppleFactroy();
44     Fruit f = fm.getFruit();
45     f.showInfo();
46         
47     }
48     
49 }
 
三:抽象工厂模式
未完。。。
 
 

OOAD之创建型模式之工厂模式

标签:

原文地址:http://www.cnblogs.com/hellokitty1/p/4637597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!