zoukankan      html  css  js  c++  java
  • simplefactory简单工厂模式

    简单工厂模式概述
        又叫静态工厂方法模式,它定义一个具体的工厂类负责一些类的实例

    优点
        客户端不需要在负责对象的创建,从而明确了各个类的职责

    缺点:
        这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某
        些对象的而创建方式不通风,就需要不断的修改工厂类,不利于后期的维护

    package com.simplafactory;
    
    public interface Animal {
        public void eat();
    }
    package com.simplafactory;
    
    public class Cat implements Animal {
    
        @Override
        public void eat() {
            System.out.println("猫吃鱼");
        }
    
    }
    package com.simplafactory;
    
    public class Dog implements Animal {
    
        @Override
        public void eat() {
            System.out.println("狗吃肉");
        }
    
    }
    package com.simplafactory;
    
    public class AnimalDemo {
        public static void main(String[] args) {
    //        Dog d=new Dog();
    //        Cat c=new Cat();
    //        
    //        c.eat();
    //        d.eat();
    //        
    //        System.out.println("===============");
            
    //        Animal d=new Dog();
    //        Animal c=new Cat();
    //        d.eat();
    //        c.eat();
    //        AnimalFactory af=new AnimalFactory();
    //        Dog d=af.createDog();
    //        Cat c=af.createCat();
    //        d.eat();
    //        c.eat();
            AnimalFactory af=new AnimalFactory();
            Dog d=(Dog) af.createAnimal("dog");
            Cat c=(Cat) af.createAnimal("cat");
            if(d!=null){
                d.eat();
            }
            if(c!=null){
                c.eat();
            }
            
        }
    }
    package com.simplafactory;
    
    public class AnimalFactory {
    //    public Dog createDog(){
    //        return new Dog();
    //    }
    //    
    //    public Cat createCat(){
    //        return new Cat();
    //    }
    
        public Animal createAnimal(String name){
            if("cat".equalsIgnoreCase(name)){
                return new Cat();
            }
            else if("dog".equalsIgnoreCase(name)){
                return new Dog();
            }
            return null;
        }
    }
  • 相关阅读:
    squid开多端口代理的心得
    用ssh跑pppd(最简单的linuxvpn)
    Asterisk1.2编译与安装
    E1 CE1 PRI BRI T1 的区别
    asterisk卡常见问题(收集整理)
    CCProxy+Eborder开透明代理详细设置(附图文)
    iptables+NAT+squid 透明代理上网实现方案
    asterisk积累命令
    MySQL Cluster的常见问题
    如何配置Silverlight4开发环境
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/5609218.html
Copyright © 2011-2022 走看看