首页 > 其他分享 >设计模式: 抽象工厂模式练习

设计模式: 抽象工厂模式练习

时间:2022-12-11 18:56:01浏览次数:37  
标签:Opt return Name 练习 InterfaceControl 抽象 func 设计模式 type

package main

import "fmt"

func main() {
	baseWindow := NewBase(&Windows{})
	fmt.Println(baseWindow.Opt.Jump())
	baseWindow.Inter.Color()

	baseAnd := NewBase(&Android{})
	fmt.Println(baseAnd.Opt.Jump())
	baseAnd.Inter.Color()
}

//  抽象工厂模式练习题2
//  某游戏厂商推出新的 手机游戏软件 支持 ios、android、windows 系统
//  针对不同的 系统。 提供不同的 游戏操作控制类 和 游戏界面控制类

// 创建方法的接口
type CreateFactory interface {
	CreateOptimize() Optimize
	CreateInterfaceControl() InterfaceControl
}

func NewBase(f CreateFactory) *Game {
	return &Game{
		Opt: f.CreateOptimize(),
		Inter: f.CreateInterfaceControl(),
	}
}

type Optimize interface {
	Jump() string
}

type InterfaceControl interface {
	Color()
}

type Opt struct {
	Name string
}

func (o *Opt) Jump() string {
	return o.Name
}

type Infc struct {
	Name string
}

func (i *Infc) Color() {
	fmt.Println(i.Name)
}

type Ios struct {}

func (is *Ios) CreateOptimize() Optimize {
	return &Opt{Name: "ios opt"}
}

func (is *Ios) CreateInterfaceControl() InterfaceControl {
	return &Infc{Name: "ios infc"}
}

type Android struct {}

func (ad *Android) CreateOptimize() Optimize {
	return &Opt{Name: "and opt"}
}

func (ad *Android) CreateInterfaceControl() InterfaceControl {
	return &Infc{Name: "and infd"}
}

type Windows struct {}

func (w *Windows) CreateOptimize() Optimize {
	return &Opt{Name: "win opt"}
}

func (w *Windows) CreateInterfaceControl() InterfaceControl {
	return &Infc{Name: "sin infc"}
}

type Game struct {
	Opt Optimize
	Inter InterfaceControl
}

  

标签:Opt,return,Name,练习,InterfaceControl,抽象,func,设计模式,type
From: https://www.cnblogs.com/zhaoxianxin/p/16974163.html

相关文章

  • 设计模式之访问者模式
    概述访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操......
  • 抽象类
    抽象类当父类的某些方法,需要声明,但是又不确定如何实现时(即父类方法的不确定性),可以将其声明为抽方法,那么这个类就是抽象类。一、抽象类快速入门当父类的一些方法不能确定......
  • #yyds干货盘点# react笔记之学习之使用组件完成练习
     我是歌谣放弃很容易但是坚持一定很酷日期部分data.jsimportReactfrom'react';import'./MyDate.css';constMyDate=()=>{return(<divclassName="d......
  • go设计模式之行为型模式
    行为模式解决什么问题行为型模式关注对象之间的通信和职责委派。下面介绍go中比较常用的3种设计模式分别是策略模式,模版模式,观察者模式。1.策略模式策略模式将一组行为分......
  • django练习
    创建django项目:1.win+r打开cmd2.进入到你想要创建django项目的目录输入指令创建django项目django-adminstartproject项目名称在cmd输入cddjangotest进入项......
  • c# 抽象类+特性 验证QQ,Mobile,Name的通用写法
    1.调用boolbResult=ValidateAttributeExtension.Validate<StudentVip>(vip);[Custom]publicclassStudentVip:Student{[Custom]publicst......
  • 02.工厂设计模式
    简单工厂模式(静态工厂模式)简单工厂模式是属于创建型模式,是工厂模式的的一种,简单工厂模式是有一个工厂对象决定创建出那一种产品类的实例。简单工厂模式是工厂模式家族的......
  • Stream流之综合练习
    packagecom.Lucky.test;importjava.util.*;importjava.util.stream.Collectors;importjava.util.stream.Stream;/***练习1:数据过滤,定义一个Int类型的集合,过......
  • 【Java设计模式】用盖房子案例讲解建造者模式(生成器模式)
    一、前言今天学习了Java设计模式中的建造者模式,细心整理了学习笔记以及对这个模式的自我理解,希望大家喜欢!二、需求介绍现在我们需要建房子,过程为打桩、砌墙、封顶。房子有各......
  • 24. 设计模式
    设计模式设计模式(Designpattern)是解决软件开发某些特定问题而提出的一些解决方案也可以理解成解决问题的一些思路。通过设计模式可以帮助我们增强代码的可重用性、可扩......