标签:pre 修改 equals 需要 tor mac equal 定义 继承
创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式;
根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。
该模式用于封装和管理对象的创建,是一种创建型模式。
示例,参考:https://www.cnblogs.com/yssjun/p/11102162.html
Phone类:手机标准规范类(AbstractProduct) public interface Phone { void make(); } MiPhone类:制造小米手机(Product1) public class MiPhone implements Phone { public MiPhone() { this.make(); } @Override public void make() { // TODO Auto-generated method stub System.out.println("make xiaomi phone!"); } } IPhone类:制造苹果手机(Product2) public class IPhone implements Phone { public IPhone() { this.make(); } @Override public void make() { // TODO Auto-generated method stub System.out.println("make iphone!"); } } PhoneFactory类:手机代工厂(Factory) public class PhoneFactory { public Phone makePhone(String phoneType) { if(phoneType.equalsIgnoreCase("MiPhone")){ return new MiPhone(); } else if(phoneType.equalsIgnoreCase("iPhone")) { return new IPhone(); } return null; } }
AbstractFactory类:生产不同产品的工厂的抽象类 public interface AbstractFactory { Phone makePhone(); } XiaoMiFactory类:生产小米手机的工厂(ConcreteFactory1) public class XiaoMiFactory implements AbstractFactory{ @Override public Phone makePhone() { return new MiPhone(); } } AppleFactory类:生产苹果手机的工厂(ConcreteFactory2) public class AppleFactory implements AbstractFactory { @Override public Phone makePhone() { return new IPhone(); } }
上面两种模式不管工厂怎么拆分抽象,都只是针对一类产品Phone
提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。
在工厂方法模式中,一个具体的工厂负责生产一类具体的产品,即一对一的关系,但是,如果需要一个具体的工厂生产多种产品对象,那么就需要用到抽象工厂模式了。
抽象工厂模式通过在AbstarctFactory中增加创建产品的接口,并在具体子工厂中实现新加产品的创建,当然前提是子工厂支持生产该产品。
PC类:定义PC产品的接口(AbstractPC) public interface PC { void make(); } MiPC类:定义小米电脑产品(MIPC) public class MiPC implements PC { public MiPC() { this.make(); } @Override public void make() { // TODO Auto-generated method stub System.out.println("make xiaomi PC!"); } } MAC类:定义苹果电脑产品(MAC) public class MAC implements PC { public MAC() { this.make(); } @Override public void make() { // TODO Auto-generated method stub System.out.println("make MAC!"); } } 下面需要修改工厂相关的类的定义: AbstractFactory类:增加PC产品制造接口 public interface AbstractFactory { Phone makePhone(); PC makePC(); } XiaoMiFactory类:增加小米PC的制造(ConcreteFactory1) public class XiaoMiFactory implements AbstractFactory{ @Override public Phone makePhone() { return new MiPhone(); } @Override public PC makePC() { return new MiPC(); } } AppleFactory类:增加苹果PC的制造(ConcreteFactory2) public class AppleFactory implements AbstractFactory { @Override public Phone makePhone() { return new IPhone(); } @Override public PC makePC() { return new MAC(); } }
参考链接:https://www.jianshu.com/p/70f7fd47f2e2
标签:pre 修改 equals 需要 tor mac equal 定义 继承
原文地址:https://www.cnblogs.com/personsiglewine/p/13024188.html