zoukankan      html  css  js  c++  java
  • 23种设计模式之抽象工厂模式代码实例

    普通工厂模式有一个问题,就是需要拓展程序时需要修改原来的代码,

    违反了程序的对拓展开放,对修改关闭的原则,为了解决这个问题就有了抽象工厂模式。

    需要增加新的功能的时候直接增加工厂类,这样就避免了修改原有的代码,实现了功能的拓展。

    先有产品的抽象类,再有工厂的抽象类,再有二者的实现类,具体见代码。

    产品的抽象类:

    public interface Message {
        public void send();
    }

    工厂的抽象类:

    public interface Factory {
        public Message produce();
    }

    产品的两个实现类:

    public class SamsungMessage implements Message{
        public void send() {
            System.out.println("Samsung message!");
        }
    }
    public class IphoneMessage implements Message{
        public void send() {
            System.out.println("Iphone message!");
        }
    }

    工厂的两个实现类:

    public class IphoneFactory implements Factory{
        public Message produce() {
            return new IphoneMessage();
        }
    }
    public class SamsungFactory implements Factory{
        public Message produce() {
            return new SamsungMessage();
        }
    }

    测试抽象工厂模式:

    public class TestFactory {
        public static void main(String[] args) {
            Factory factory = new IphoneFactory();
            Factory factory1 = new SamsungFactory();
            Message iphone = factory.produce();
            Message samsung = factory1.produce();
            iphone.send();
            samsung.send();
    
        }
    }

    得到结果:

    Iphone message!
    Samsung message!
    
    Process finished with exit code 0
  • 相关阅读:
    centos7 安装docker 对应的 rabbitmq3.6.15
    golang中defer的使用规则
    Yii2-redis 不用 composer 的安装
    安装并使用PHPunit
    PHP Taint – 一个用来检测XSS/SQL/Shell注入漏洞的扩展
    SQL Antipatterns——SQL 反模式(二)
    tp5 No input file specified.
    vue 封装自定义组件
    判断微信访问
    phalcon windows下安装phalcon-devtools 官网的坑
  • 原文地址:https://www.cnblogs.com/longhaolove/p/7844537.html
Copyright © 2011-2022 走看看