求一个三种设计模式结合的java小程序

求一个三种设计模式结合的java小程序,第1张

//##食堂:DinningHall.java

public class DinningHall{

    private DinningHall instance = null

    private DinningHall{

    }

    public static DinningHall getInstance(){

        //单例模式:创建食堂对象

        if(instance == null){

            instance = new DinningHall()

        }

        return instance

    }

    public Food createFood(String order){

        //工厂模式:创建一些吃的

        if("1号菜".equals(order)){

            //比如菜单上1号菜是鱼香肉丝

            return new YuXiangRouSi()

        }

        else if("2号菜".equals(order)){

            //比如菜单上2号菜是宫保鸡丁

            return new GongBaoJiDing()

        }

        else{

            return null

        }

    }

    //建造者模式start:集中管理,生产一些吃的东西

    private List<Food> list = new ArrayList<Food>()  

    public List<Food> getFoods(){

        return list

    }

    public void produceSomeMantou(int count){

         for(int i=0 i<count i++){  

            list.add(new ManTou())

        }  

    }

    //建造者模式end

}

//##食物:Food.java

public interface Food(){

    public String getName()

}

//##鱼香肉丝:YuXiangRouSi.java

public class YuXiangRouSi implements Food(){

    public String getName(){

        return "鱼香肉丝"

    }

}

//##宫保鸡丁:GongBaoJiDing.java

public class GongBaoJiDing implements Food(){

    public String getName(){

        return "宫保鸡丁"

    }

}

//##馒头:Mantou.java

public class Mantou implements Food(){

    public String getName(){

        return "馒头"

    }

}

//##测试类Tester.java

public class Tester{

    public static void main(){

        //1.单例模式

        DinningHall dh = DinningHall.getInstance()

        //2.工厂模式

        Food f1 = DinningHall.createFood("1号菜")

        System.out.println(f1.getName())

        //3.建造者模式

        DinningHall.produceSomeMantou(5)

        List<Food> foods = DinningHall.getFoods()

        for(Food f : foods){

            System.out.println(foods +"\t")

        }    

        System.out.println()

    }

}

public class ManFactory {

/* 以下是单例模式的使用,外部需要使用该类时只能实例化一个对象*/

private static ManFactory mf = new ManFactory()

private static List<Man>allMan = new ArrayList<ManFactory.Man>()

private ManFactory(){}

public static ManFactory instance(){

return mf

}

/*这里是简单工厂模式的使用,当需要一个人的时候,直接调用工厂类的造人方法, 而不用去新建一个人*/

public Man makeMan(String name){

Man man = new Man()

man.setName(name)

allMan.add(man)//将造出来的人放入工厂的一个集合中,当以后需要这群人统一做事的时候,可以直接获取到

return man

}

public static List<Man>getAllMan() {

return allMan

}

class Man{

private String name

public void dancing(){

System.out.println(name +"正在跳舞")

}

public void setName(String name) {

this.name = name

}

}

public static void main(String[] args) {

/*使用了单例模式,看上去是构建了两个工厂,其实用的还是一个*/

ManFactory fc = ManFactory.instance()

ManFactory fc2 = ManFactory.instance()

fc.makeMan("小明")

fc.makeMan("小红")

fc2.makeMan("小杨")

fc2.makeMan("小张")

for(Man man:ManFactory.getAllMan()){

man.dancing()

}

}

}

设计模式主要分三个类型、创建型、结构型和行为型。设计模式分:3种类型及23种模式。

JAVA中的开发模式:MVC是一个很常用的程序开发设计模式,M-Model(模型):封装应用程序的状态;V-View(视图):表示用户界面;C-Controller(控制器):对用户的输入作出反应,创建并设置模型。

扩展资料

创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。

结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。

行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。

参考资料:百度百科 设计模式

百度百科 JAVA


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11379784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存