b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

抽象工厂模式_工厂模式 java_抽象工厂模式 java

电脑杂谈  发布时间:2017-02-09 22:12:54  来源:网络整理

一、工厂方法模式

简单工厂模式的缺陷就是类的创建太过于依赖工厂,一旦需要进行程序扩展,就必须修改工厂类的代码

这违背了背包原则。抽象工厂模式

而工厂方法模式针对这一问题进行了改进。

public intece Sender {public void send();}public intece producer {public Sender produce();}public class MailFactory implements producer{public Sender produce() {return new Mail();}}public class Mail implements Sender{public void send() {System.out.println("mail is sending ");}}//测试类public class FactoryPatten {public static void main(String[] args) {MailFactory mailFactory = new MailFactory();Sender sender =  mailFactory.produce();sender.send();}}

工厂方法模式的好处就是,一旦进行功能扩展,只需要增加一个类实现Sender接口,再创建一个工厂类实现producer接口,即可

对于原有的工厂进行保留,这样就保证了再不违背闭包原则下,进而提高了拓展性。

二、抽象工厂模式

工厂方法模式和抽象工厂模式不好分清楚

工厂方法模式:

一个抽象产品类,可以派生出很多具体产品类

一个抽象工厂类,可以派生出很多具体工厂类

每一个具体工厂类只能创建一个具体产品的实例

抽象工厂模式:

多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。

一个抽象工厂类,可以派生出多个具体工厂类。

每个具体工厂类可以创建多个具体产品类的实例,也就是创建的是一个产品线下的多个产品。

package day03;intece ProduceComputer{}//抽象电脑产品intece ProduceHouse{}//抽象家用,以下只用抽象电脑产品举例intece Factory{}//抽象工厂//A工厂的鼠标class MouseA implements ProduceComputer{MouseA(){System.out.println("MouseA has created");}public void doSomething(){System.out.println("MouseA is running");}}//B工厂的鼠标class MouseB implements ProduceComputer{MouseB(){System.out.println("MouseB has created");}public void doSomething(){System.out.println("MouseB is running");}}//A工厂的键盘class keyBoardA implements ProduceComputer{keyBoardA(){System.out.println("keyBoardA has created");}public void doSomething(){System.out.println("keyBoardA is running");}}//B工厂的键盘class keyBoardB implements ProduceComputer{keyBoardB(){System.out.println("keyBoardB has created");}public void doSomething(){System.out.println("keyBoardB is running");}}//A工厂,生产A工厂的产品class FactoryA implements Factory{public MouseA produceMouseA(){return new MouseA();}public keyBoardA produceKeyBoardA(){return new keyBoardA();}}//B工厂,生产B工厂的产品class FactoryB implements Factory{public MouseB produceMouseB(){return new MouseB();}public keyBoardB produceKeyBoardB(){return new keyBoardB();}}//测试类public class AbstractFactory {public static void main(String[] args) {MouseA ma = new FactoryA().produceMouseA();ma.doSomething();keyBoardA ka = new FactoryA().produceKeyBoardA();ka.doSomething();MouseB mb = new FactoryB().produceMouseB();mb.doSomething();keyBoardB kb = new FactoryB().produceKeyBoardB();kb.doSomething();}}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-31482-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...