工厂模式首先解决的是依赖问题:一个4s店须要一辆车(宝马或者奥迪 。。。),能够直接购买或者有别人提供,工厂模式就是用的别人提供的方法。图: java
为什吗要用设计模式,他不是一个工具或者语言的一中机制,它是解决问题的思路,利用某种语言的的特性(继承,多态、封装等)。须要你作过项目写过大量的代码后才会用到。也能够不用,你可能会付出不少的时间。作项目最惧怕的就是后期维护,你前期框架不搭建好的话,后期都不知道怎么修改或者要花上翻倍的时间。单纯的学习设计模式可能没有多好的效果。可是后面你会慢慢的发现他的能量之大。感受是每一个程序员必修的一门课。(话多说了一些!!) 程序员
工厂模式算是比较长用的,它是解决类依赖的耦合度的:就如图解释A学要B,经常使用的是new B实例,那么后期须要换成C在修改代码new C,若是要修该上百个,那你就受不了了。 设计模式
工厂模式的思路是利用多态机制不管怎么变,都不用在逻辑代码中查看修改,只须要在工厂类(一个类或接口)中修改一行代码。 框架
提醒:建立类的实体2种方法:new 或者 一个方法。这里就是用的方法。牢记这一点。 ide
1-----------A须要B(依赖),用静态方法获取实例: 工具
class Test { //Test类须要Animal public static void main(String[] args) { Animal animal = Factory.getAnimal(); System.out.print(animal.getName() + "=======" + animal.getColor()); } }这里注意须要多态,Animal是个接口,这样的话只要是实现了这个接口,就不用修改了。
interface Animal { public String getName(); public String getColor(); }工厂模式能够想象成工厂就是一个普通的类,里面有一个静态方法返回一个须要的对象。
class Factory { public static Animal getAnimal() { return new Dog(); } }这里返回的是Dog。上面的代码能够简化成
Animal animal = new Dog();感受很麻烦,直接这句话不就得了,还拐那么多弯。说了代码少的话无所谓,但是有个几万行的代码,你就傻眼了。
要实现上面代码就要用到多态了,把Dog实现Animal接口 学习
class Dog implements Animal { String name = "dog"; String color = "black"; @Override public String getName() { // TODO Auto-generated method stub return name; } @Override public String getColor() { // TODO Auto-generated method stub return color; } }如今若是要修改代码,换成猫Cat,就在建立一个类Cat,继承Animal
class Cat implements Animal { String name = "cat"; String color = "red"; public String getName() { return name; } public String getColor() { return color; } }
在factory中修改一句:return new Cat(); 就能够了。之后无论修改多少次10000次都不怕。
spa
工厂模式分了好几种,我只是写了其中的一种,网上有不少,看来看去文字太多,抄袭太多不容易理解,我就简单的写了一些。你想深如的话,能够百度。
设计