工厂模式

来源:互联网 发布:八皇后递归算法 编辑:程序博客网 时间:2024/06/10 00:37

1:工厂模式是23种设计模式之一也是最常用的设计模式,工厂模式主要解决,在不修改原代码的情况下进行自己的新功能实现

    开闭原则(Open Close Principle)

    依赖倒转原则(Dependence Inversion Principle)

    接口隔离原则(Interface Segregation Principle)

2:工厂模式可以分为三类: 

   简单工厂模式(Simple Factory) 
   工厂方法模式(Factory Method)

   抽象工厂模式(Abstract Factory)

3:为什么用工厂模式

   说白了 就是修改变更时省事,

   尤其你拿到一个庞大的项目,然后经理让你半天改完,改不完就加班

   这时就体现这些个模式的可贵之处了,

  用了优秀的模式 = 准时下班

  没有模式,自己写 = 加班到半夜

4:以下是代码定义合理不合理凑合着看(实际开发中简单工厂是最常用的)、

   简单工厂(开发中常用)

/** * * @author lilili * */public interface People {    void eat(); //吃的方法}class Apple implements People{    @Override    public void eat() {                System.out.println("吃苹果");            }}class Banana implements People{    @Override    public void eat() {                System.out.println("吃香蕉");            }    } 
/** * 创建工厂 * @author lilili * */public class Factory {    public static People creat(People type){                if(type instanceof Banana){            return new Banana();        }else if(type instanceof People){            return new Apple();        }        return null;    }}

/** * 测试简单工厂 * @author lilili * */public class TestFactory {public static void main(String[] args) {People peopleBanana=Factory.creat(new Apple());peopleBanana.eat();People peopleApple=Factory.creat(new Banana());peopleApple.eat();}}

工厂模式

package cn.lilili.com;/** * 定义一个人类 * @author lilili * */public interface People {    void eat(); //吃的方法}class Apple implements People{    @Override    public void eat() {                System.out.println("吃苹果");            }}class Banana implements People{    @Override    public void eat() {                System.out.println("吃香蕉");            }    } 

package cn.lilili.com;public interface PeopleFactory {People creat();}class AppleFcatory implements PeopleFactory{@Overridepublic People creat() {return new Apple();}}class BananaFcatory implements PeopleFactory{@Overridepublic People creat() {return new Banana();}}
package cn.lilili.com;public class TestFactory {public static void main(String[] args) {PeopleFactory peopleFactory=new AppleFcatory();People people=peopleFactory.creat();people.eat();PeopleFactory peopleFactory2=new BananaFcatory();People people2=peopleFactory2.creat();people2.eat();}}

抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。

抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据LSP原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。




原创粉丝点击