我想建个网站网站怎么建域名,安庆哪里做网站,自己做网站用什么软件,六安网红小杨哥今天谈一下对工厂模式学习的总结。看完视频和文章之后要自己表述工厂模式#xff0c;总是感觉无从说起#xff0c;不知道怎么去定义工厂模式#xff0c;反复看了几遍之后终于理解一点。自己理解工厂模式是通过这两种模式的特点来理解和定义的#xff0c;首先工厂模式有简单…今天谈一下对工厂模式学习的总结。看完视频和文章之后要自己表述工厂模式总是感觉无从说起不知道怎么去定义工厂模式反复看了几遍之后终于理解一点。自己理解工厂模式是通过这两种模式的特点来理解和定义的首先工厂模式有简单工厂模式(不在23中设计模式中)工厂方法模式抽象工厂模式把三种模式对比来定义根据不同模式的特点来记忆。工厂模式是让对象的创建和使用分离每次使用时不用自己创建把创建对象的过程交给工厂来完成。定义(仅供参考 -- 理解后再形成自己的定义)工厂方法模式定义定义创建一个产品的工厂接口将这一个产品的具体创建方法延迟到子类工厂实现当需要使用这个产品时通过工厂获取。如果只有一类产品定义为简单工厂模式了.抽象工厂模式定义定义创建一系列产品的工厂接口将这一系列产品的具体创建过程延迟到子类工厂使用时通过工厂就可以创建一系列的产品。优缺点对比工厂方法模式优点-可以进行不同产品的扩展如定义一个水果类工厂就可以创建不同的水果现在要扩展一个蔬菜类产品就再定义一个蔬菜类工厂。缺点-单要创建一系列产品类的时候会出现工厂泛滥一个产品类就要创建一个产品接口一个产品工厂增加系统复杂性。比如我还要创建动物类工具类等工厂将越来越多。抽象工厂模式优点-可以创建一系列的产品当增加新的产品系列可以不用修改代码如建了一个海尔系列的电器再建一个格力系列的就可以只增加一个名称。缺点-当增加一个产品时要改动工厂所有的接口。如工厂创建的是洗衣机电视空调现在要增加一个热水器的产品那么所有工厂子类都要增加。模式结构对比工厂模式的结构1.抽象产品Product2.抽象工厂AbstractFactory3.具体产品Concrete Product4.具体工厂Conrete Factory抽象工厂模式结构1.抽象产品系列Product2.抽象工厂AbstractFactory3.具体产品系列Concrete Product4.具体工厂Conrete Factory上代码工厂模式//产品public interfaceProduct {public voidrun();}//工厂public interfaceFactory {publicProduct createFactory();}//车类产品和工厂public class Car implementsProduct {Overridepublic voidrun() {System.out.println(驾车起飞。。。。。。);}}public class CarFactory implementsFactory {OverridepublicProduct createFactory() {return newCar();}}//食物类产品和工厂public class Food implementsProduct{Overridepublic voidrun() {System.out.println(eat.......);}}public class FoodFactory implementsFactory {OverridepublicProduct createFactory() {return newFood();}}//测试代码public classTestFactory {public static voidmain(String[] args) {Factory f newCarFactory();//Factory f new FoodFactory();Product p f.createFactory();p.run();}}抽象工厂模式//产品系列public interfaceTV {public voidshow();}public interfaceWashing {public voidwash();}public interfaceAir {public voidfever();}//产品工厂public interfaceAbstractFactory {publicTV crateTV();publicAir createAir();publicWashing createWashing();}//HR系列产品public class HRTelevision implementsTV{Overridepublic voidshow() {System.out.println(海尔电视。。。。。);}}public class HRWarshing implementsWashing{Overridepublic voidwash() {System.out.println(海尔洗衣机。。。);}}public class HRAir implementsAir{Overridepublic voidfever() {System.out.println(海尔空调。。。);}}//HR系列产品工厂public class HRFactory implementsAbstractFactory {OverridepublicTV crateTV() {return newHRTelevision();}OverridepublicAir createAir() {return newHRAir();}OverridepublicWashing createWashing() {return newHRWarshing();}}//GL系列产品public class GLTelevision implementsTV{Overridepublic voidshow() {System.out.println(格力电视。。。。);}}public class GLAir implementsAir {Overridepublic voidfever() {System.out.println(格力空调。。。。。);}}public class GLWashing implementsWashing {Overridepublic voidwash() {System.out.println(格力洗衣机。。。);}}//GL系列产品工厂public class GLFactory implementsAbstractFactory {OverridepublicTV crateTV() {return newGLTelevision();}OverridepublicAir createAir() {return newGLAir() ;}OverridepublicWashing createWashing() {return newGLWashing();}}//测试代码public classTest {public static voidmain(String[] args) {//AbstractFactory f new GLFactory();AbstractFactory f newHRFactory();TV tvf.crateTV();Air airf.createAir();Washing warshf.createWashing();tv.show();air.fever();warsh.wash();}}测试代码中只需要修改工厂类就可以实现生产不同的产品和不同的产品系列了 当工厂可以通过配置文件来取的时候就不用更改任何代码就实现了实际生产中工厂都可以通过快速编码来配置很多成型的产品都是直接配置就能完成整个系统的初始化了。这是自己理解并输入的第二篇关于设计模式的笔记了只是看一遍和根据自己的思路写一遍真的是完全不同的感觉如果只是看一遍过一天可能就忘记了 如果自己思路清晰之后再自己设计下根据思路写一遍如果有问题又回去看看具体细节一路记下来差不多就能搞定了希望对路过的你有帮助。后续继续学习中。。。