设计模式之工厂模式

来源:互联网 发布:山寨苹果数据线 知乎 编辑:程序博客网 时间:2024/06/05 23:44

1、目的
写这些内容只是为了自己加深印象,方便解决问题。在遇到问题的时候能多几种思路。文章中加入的自己的理解可能有不到位的地方,或者错误的地方。当你读到这篇博客的时候希望能自己亲自实践一下。因为能力有限只写一下自己的笔记,方便以后查阅。
2、自己对设计模式了解还不够深入,需要更加深入的学习。对于复杂的类可以使用工厂模式,但是对于只需要new就能创建的类,直接new出来就好。工厂模适合创建复杂的类,让子类自己决定创建哪一种工厂。
3、工厂模式第一步:

3.1创建一个工厂接口
public interface AnimailFactory {     void call();}
3.2创建具体的子类实现工厂里的方法
public class Cat implements AnimailFactory {    @Override    public void call() {        Log.e("factory=========","这是工厂里的一只猫");    }}public class Dog implements AnimailFactory {    @Override    public void call() {        Log.e("factory=========","这是工厂里的一条狗");    }}public class Fish implements AnimailFactory {    @Override    public void call() {        Log.e("factory=========","这是工厂里的一条鱼");    }}
3.3创建工厂的实现类
public class Factory {    public AnimailFactory createAnimal(String type){        if (type==null){            Log.e("factory======","没有动物要养");            return null;        }        if (type.equals("dog")){            return new Dog();        }else if(type.equals("cat")){            return new Cat();        }else if (type.equals("fish")){            return new Fish();        }        return  null;    }}
3.4通过传递信息获取实体类的对象
  Factory fac = new Factory();                AnimailFactory dog = fac.createAnimal("dog");                dog.call();                AnimailFactory cat = fac.createAnimal("cat");                cat.call();                AnimailFactory fish = fac.createAnimal("fish");                fish.call();
3.5验证工厂类是否创建了子类
12-01 14:24:35.736 6714-6714/com.test.factory E/factory=========: 这是工厂里的一条狗12-01 14:24:35.736 6714-6714/com.test.factory E/factory=========: 这是工厂里的一只猫12-01 14:24:35.736 6714-6714/com.test.factory E/factory=========: 这是工厂里的一条鱼
原创粉丝点击