欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

工厂方法模式示例

程序员文章站 2022-03-20 14:01:28
...
//工厂方法模式示例:
package innerclasses;

import static net.mindview.util.Print.*;

interface Service{
        void method1();
        void method2();
}

interface ServiceFactory{
        Service getService();
}

class Implementation1 implements Service{
        private Implementation1 (){}           //private的构造函数,只能在当前类中调用此方法创建对象
        public void method1(){
                println("Implementation1 method1");
        }
        public void method2(){
                println("Implementation1 method2");
        }
        public static ServiceFactory factory =   //因为只需要一个factory对象,所以这里定义为static
                new ServiceFactory(){                //作为工厂的类使用匿名类来实现,
                        public Service getService(){
                                return new Implementation1();                
                        }
        };
}

class Implementation2 implements Service{
        private Implementation2(){}
        public void method1(){
                System.out.println("Implementation2 method1");
        }
        public void method2(){
                System.out.println("Implementation2 method2");
        }
        public static ServiceFactory factory = 
                new ServiceFactory(){
                        public Service getService(){
                                return new Implementation2();
                        }
        };
}

public class Factories {
        public static void serviceConsumer(ServiceFactory fact){
                Service s = fact.getService();
                s.method1();
                s.method2();
        }
        public static void main(String[] args) {
                serviceConsumer(Implementation1.factory);
                serviceConsumer(Implementation2.factory);
        }
}

 

相关标签: .net