美文网首页
工厂模式理解

工厂模式理解

作者: 繁星_227a | 来源:发表于2018-07-16 21:56 被阅读0次

工厂模式分为简单工厂、工厂模式、抽象工厂三种层级概念。简单工厂不属于23种设计模式,抽象工厂才是。

简单工厂

简单工厂主要就是通过工厂创建一个个不同的实例。
如:

abstract class Animal{
        String name;
}
class Person extends Animal{
        public Person(String name){
                super();
                this.name = name;
        }
}
class Dog  extends Animal{
        public Dog(String name){
                super();
                this.name = name;
        }
}
class Factory{
        public Person getPerson(String name){
                return new Person(name);
        }
        public Dog getDog(String name){
               return new Dog(name);
        }

}

工厂模式

工厂模式就是将单一工厂抽象化,通过不同的具体工厂来生产不同的实例。

abstract class Factory{
        public abstract Animal create(String name);  
}
class PersonFactory extends Factory{
        public Animal create(String name){
                return new Person(name);
        }
}
class DogFactory extends Factory{
        public Animal create(String name){
                return new Dog(name);
        }
}

抽象工厂

有时候,可能工厂单一生产一种实例满足不了我们的需求,就比如人分为老人、小孩、青年人。狗也一样。他们有不同的行为表现形式,但是他们都有行为方式,所以我们可以将这种行为方式抽象出来,在工厂中,分类对他们进行处理。

abstract class property{
       protected abstract void behavior();
}
abstract class Young extends property{
        String name;
        protected Young (String name){
                this.name = name;
        }
}
abstract class Child extends property{
        String name;
        protected Child (String name){
                this.name = name;
        }
}
class YoungPeople extends Young{
        public YoungPeople (String name){
                super(name);
        }
        protected void behavior(){
                System.out.print("年轻人要工作");
        }
}
class ChildPeople extends Child {
        public ChildPeople (String name){
                super(name);
        }
        protected void behavior(){
                System.out.print("孩子们贪玩");
        }
}
abstract class Factory{
        public abstract Young createYoung(String name);  
        public abstract Child createChild(String name);  
}
class PersonFactory extends Factory{
        public Young createYoung(String name){
                return new YoungPeople(name);
        }
        public Child createChild(String name){
                return new ChildPeople(name);
        }
}

总结

简单工厂实质上并没有对对象进行一个很好得分类作用,也没有体现Java多态性(重载和重写)
工厂模式通过不同的工厂对生产的不同实力进行管理,在生产一种实例时,只需要创建对应的工厂,通过调用生产方法将对象生产出来,而且每次新增一种类型的对象,只需要新增一种工厂,简单体现了Java的多态性,也很好进行了解耦作用。
抽象工厂是工厂模式的一种进阶,此时,我们不再以一个对象为单位,而是以一种类别为单位,此时我们不再以对象来进行区分,而是以类型进行区分。当他们具有一定相同的行为特征时,可以将这些行为特征提取出来,再具体分类处理,如人和狗都属于动物,但是他们都有自己的行为特征,而老人和小孩的行为特征也是不一样的。这时候,人就是一种类别,而狗,又是另一种类别。总不能把人和狗混为一谈的,哈哈~~
其实本次代码还有很多可以优化的地方,比如工厂可以采用单例模式,部分可以采用泛型优化等。待后续熟练后优化~工厂菜鸟随笔感触。

相关文章

  • 简单工厂模式,工厂方法模式,抽象工厂模式梳理

    用简单的图来理解三种工厂模式,来加深对此的理解: 简单方法模式: 工厂方法模式: 抽象工厂模式: 此文仅为自己学习...

  • iOS模式之一:工厂模式和抽象工厂模式

    iOS模式之一:工厂模式和抽象工厂模式 1. 简单工厂模式 工厂模式我的理解是:他就是为了创建对象的。创建对象的时...

  • 设计模式-创建型模式 ?工厂,抽象工厂

    1.单例模式 临时的理解。关于工厂模式和抽象工厂模式的差别,主要在于工厂模式是一个工厂,而抽象工厂把工厂也做成了接...

  • 理解工厂模式

    概念理解 工厂模式是一种创建型模式,统一创建对象,供客户端使用。客户端仅需从工厂中取对象,而不用关心创建对象的逻辑...

  • 工厂模式理解

    工厂模式分为简单工厂、工厂模式、抽象工厂三种层级概念。简单工厂不属于23种设计模式,抽象工厂才是。 简单工厂 简单...

  • 工厂模式

    包含简单工厂模式、工厂模式和抽象工厂模式。 比较常见的实例化对象模式。 此处我是用例子实现几个模式方便理解。 简单...

  • 设计模式之工厂模式(美食篇)

    本文我打算聊一聊我所理解的简单工厂模式、工厂模式和抽象工厂模式。同样身为工厂模式的三种模式,他们有什么不同呢? 此...

  • 详解Java设计模式之《简单工厂模式》

    简单工厂模式是工厂模式中家族最简单实用的模式,可以理解为不同工厂模式的一个特殊的实现。 值得注意的是:简单工厂模式...

  • 简单工厂模式-设计模式学习

    文字理解 简单工厂模式又 叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专...

  • 6. iOS面试题其他篇1

    常用的设计模式 单例模式 组合模式 观察者模式 代理模式 享元模式 工厂方法模式 抽象工厂模式 MVC的理解 数据...

网友评论

      本文标题:工厂模式理解

      本文链接:https://www.haomeiwen.com/subject/wesppftx.html