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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)